2

String私はをフォーマットに変換する必要がありDateTimeます、これのために私はちょうど次のように試しました

DateTime.ParseExact(DateOfBirth,"MM/dd/yyyy",CultureInfo.InvariantCulture);

のような値を渡すと、正常に機能しています05/30/2012

5/30/2012しかし、表示エラーとして値を渡そうとすると、次のようになります。

文字列が有効な日時として認識されませんでした

これを修正するために私は

DateTime.ParseExact(String.Format("{0:MM/dd/yyyy}", DateOfBirth), "MM/dd/yyyy",
                                                  CultureInfo.InvariantCulture);

それはまだ機能していません。ここでString.Format("{0:MM/dd/yyyy}", DateOfBirth)値を試してみると、の5/30/2012代わりに同じ形式が表示され05/30/2012ます。

どうすればこれを修正できますか、誰かがここで私を助けてくれますか...

このリンク 文字列をC#でのDateTime変換に確認してください

4

6 に答える 6

2

使用M/d/yyyyしているフォーマット指定子の代わりに使用してください。M先行ゼロを含む1つの一致月のみを使用します。これはにも当てはまりますd

于 2012-06-01T07:03:33.683 に答える
1

「MM/dd/yyyy」の代わりに「d」だけを試してください。

したがって、ステートメントは次のようになります。

var date = DateTime.ParseExact(DateOfBirth, "d", CultureInfo.InvariantCulture);

このためのドキュメントはここにあります:http: //msdn.microsoft.com/en-us/library/w2sa9yss.aspx

編集

おっと、ドキュメントを読み間違えました。「M/d/yyyy」である必要があります。

于 2012-06-01T06:55:36.347 に答える
1

文字列が常にスラッシュで区切られていると仮定するDateOfBirthと、次のように試すことができます。

string[] dateParts = DateOfBirth.Split('/');
DateTime.ParseExact(string.Format("{0:00}", dateParts[0]) + "/" + string.Format("{0:00}", dateParts[1]) + "/" + string.Format("{0:0000}", dateParts[2]));

DateOfBirthオブジェクトではないため、フォーマット文字列が認識できないことが問題だと思いDateTimeます。したがって、文字列を自分で再フォーマットしてフォーマットを適用します

于 2012-06-01T06:56:54.913 に答える
1

あなたの興味があるかもしれない過負荷があります

DateTime.ParseExact(DateOfBirth,
                    new[] { "MM/dd/yyyy", "M/dd/yyyy" },
                    CultureInfo.InvariantCulture,
                    DateTimeStyles.None);

これは、1桁および2桁の月の部分を処理するのに役立ちます(5形式がそうであるため、失敗しているためMM

于 2012-06-01T07:03:22.353 に答える
1

文字列(つまり)に区切り文字があるので/、次のことができます。

DateTime.ParseExact(DateOfBirth,"M/d/yyyy",CultureInfo.InvariantCulture);

これにより、1桁または2桁の日/月が解析されます。を使用する場合はMM/dd/yyyy、両方を2桁の数字にする必要がありますが、この場合は明らかにそれが必要ではありません。

于 2012-06-01T07:04:16.103 に答える
1

文化に依存しないようにする必要がある場合。

var dateTimeFormat = CultureInfo.CreateSpecificCulture(CultureInfo.CurrentUICulture.Name).DateTimeFormat;
dateTimeFormat.ShortDatePattern = 
    Regex.Replace(Regex.Replace(dateTimeFormat.ShortDatePattern, "[M]+", "MM"), "[d]+", "dd");

var newDate = date.HasValue ? date.Value.DateTime.ToString("d", dateTimeFormat) : null;
于 2012-06-01T07:15:13.027 に答える