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
なぜ私はこれを得ているのですか?
DateTime を文字列に変換してから元に戻すという事実は別として、DateTime 形式は正確には一致しません。
DateTime.ParseExact
は文字列を解析して DateTime オブジェクトにし、提供する形式は正確に一致する必要があります。のようにDateTime.Now
表示され6/5/2013 2:29:21 PM
ますが、正しい形式はM/d/yyyy h:mm:ss tt
です。カスタム日付形式の詳細については、MSDNを確認してください。
私は手足に出て、あなたのコードを見ると、日付を日付だけにフォーマットしようとしていると思います。これは、ToString
DateTime のメソッドを使用して達成できます。
string todaysDate = DateTime.Now.ToString("MM/dd/yyyy"); // todaysDate will contain "06/05/2013"
6/5/2013 2:29:21 PM
と同じではありませんMM/dd/yyyy
。
もちろん、解析は失敗します。
あなたのコメントから、フォーマット文字列を実際にテストしているように聞こえますが、日付の値は気にしません。それでは、実際に必要な形式で日付をハードコーディングしてみませんか。
String userInput = "MM/dd/yyyy";
DateTime.ParseExact("11/11/2011", userInput, CultureInfo.CurrentCulture)
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