1

DateTimeを特定の形式に変換しようとすると、このエラーが発生します。

DateTime.Now= 6/5/2013 2:29:21 PM

DateTime.ParseExact(CStr(DateTime.Now), "MM/dd/yyyy",  CultureInfo.CurrentCulture)

エラー:

String was not recognized as a valid DateTime 

なぜ私はこれを得ているのですか?

4

3 に答える 3

7

DateTime を文字列に変換してから元に戻すという事実は別として、DateTime 形式は正確には一致しません。

DateTime.ParseExactは文字列を解析して DateTime オブジェクトにし、提供する形式は正確に一致する必要があります。のようにDateTime.Now表示され6/5/2013 2:29:21 PMますが、正しい形式はM/d/yyyy h:mm:ss ttです。カスタム日付形式の詳細については、MSDNを確認してください。

私は手足に出て、あなたのコードを見ると、日付を日付だけにフォーマットしようとしていると思います。これは、ToStringDateTime のメソッドを使用して達成できます。

string todaysDate = DateTime.Now.ToString("MM/dd/yyyy"); // todaysDate will contain "06/05/2013"
于 2013-06-05T09:15:15.940 に答える
2

6/5/2013 2:29:21 PMと同じではありませんMM/dd/yyyy
もちろん、解析は失敗します。

あなたのコメントから、フォーマット文字列を実際にテストしているように聞こえますが、日付の値は気にしません。それでは、実際に必要な形式で日付をハードコーディングしてみませんか。

String userInput = "MM/dd/yyyy";
DateTime.ParseExact("11/11/2011", userInput,  CultureInfo.CurrentCulture)
于 2013-06-05T09:24:12.073 に答える
1

Exactという名前のメソッドの部分に注意してください。時間を含む文字列を指定していて、時間を解析する方法を指定していないため、解析は失敗します。

これを試して:

DateTime.ParseExact(str, "M/d/yyyy h:mm:ss tt", CultureInfo.CurrentCulture)

LINQPadプログラムの例:

void Main()
{
    Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("en-US");
    Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("en-US");

    string str = "6/5/2013 2:29:21 PM";

    DateTime.ParseExact(str, "M/d/yyyy h:mm:ss tt", CultureInfo.CurrentCulture).Dump();
}

出力:

6/5/2013 2:29:21 PM
于 2013-06-05T09:23:44.783 に答える