C# で日付をフォーマットされた文字列に変換する

日付をフォーマットされた文字列に変換する

DateTime 型の値をフォーマットされた文字列に変換したい時、よくありますよね。

ここでは、日付を文字列に変化する際に良く使うフォーマットの例を書いておこうと思います。


DateTime.ToString([フォーマット文字列])で変換

DateTime.ToString() メソッドにフォーマット文字列を渡して、文字列に変換します。

DateTime d = DateTime.ParseExact("2019-02-01 20:05:06.401", 
				 "yyyy-MM-dd HH:mm:ss.fff",
				 CultureInfo.InvariantCulture);

Debug.WriteLine(d.ToString("yyyy-MM-dd HH:mm:ss.fff")); // 2019-02-01 20:05:06.401
Debug.WriteLine(d.ToString("yyyy/MM/dd HH:mm:ss"));     // 2019/02/01 20:05:06
Debug.WriteLine(d.ToString("yyyy/M/d HH:mm:ss"));       // 2019/2/1 20:05:06
Debug.WriteLine(d.ToString("yy/M/d HH:mm:ss"));         // 19/2/1 20:05:06
Debug.WriteLine(d.ToString("yyyyMMddHHmmss"));          // 20190201200506
Debug.WriteLine(d.ToString("MM/dd/yyyy HH:mm:ss"));     // 02/01/2019 20:05:06

C# で日付をフォーマットされた文字列に変換する 1


同じフォーマット文字列を渡しても、カルチャーによって変換後の文字列が変わってくる場合があります。

例えば、CultureInfo.CurrentCulture が日本 (ja-JP)の場合と、アメリカ (en-US)の場合では次のように違います。

DateTime d = DateTime.ParseExact("2019-02-01 20:05:06.401", 
				 "yyyy-MM-dd HH:mm:ss.fff",
				 CultureInfo.InvariantCulture);
                                    
// CurrentCulture を日本 (ja-JP) に設定する
CultureInfo.CurrentCulture = CultureInfo.CreateSpecificCulture("ja-JP");
Debug.WriteLine(d.ToString("----- ja-JP -----"));
Debug.WriteLine(d.ToString("d"));                       // 2019/02/01
Debug.WriteLine(d.ToString("G"));                       // 2019/02/01 20:05:06
Debug.WriteLine(d.ToString("yyyy/MM/dd hh:mm:ss tt"));  // 2019/02/01 08:05:06 午後
Debug.WriteLine(d.ToString("MMM"));     // 2
Debug.WriteLine(d.ToString("MMMM"));    // 2月
Debug.WriteLine(d.ToString("ddd"));     // 金
Debug.WriteLine(d.ToString("dddd"));    // 金曜日

// CurrentCulture をアメリカ (en-US) に設定する
CultureInfo.CurrentCulture = CultureInfo.CreateSpecificCulture("en-US");
Debug.WriteLine(d.ToString("----- en-US -----"));
Debug.WriteLine(d.ToString("d"));                       // 2/1/2019
Debug.WriteLine(d.ToString("G"));                       // 2/1/2019 8:05:06 PM
Debug.WriteLine(d.ToString("MM/dd/yyyy hh:mm:ss tt"));  // 02/01/2019 08:05:06 PM
Debug.WriteLine(d.ToString("MMM"));     // Feb
Debug.WriteLine(d.ToString("MMMM"));    // February
Debug.WriteLine(d.ToString("ddd"));     // Fri
Debug.WriteLine(d.ToString("dddd"));    // Friday

C# で日付をフォーマットされた文字列に変換する 2


最後にカルチャーを指定して変換したい場合は次のように指定できます。

この例では、ドイツ(de-DE)の CultureInfoを生成して、第二引数として DateTime.ToString() メソッドに渡しています。

DateTime d = DateTime.ParseExact("2019-02-01 20:05:06.401", 
				 "yyyy-MM-dd HH:mm:ss.fff",
                                 CultureInfo.InvariantCulture);

// カルチャーを指定して変換する
Debug.WriteLine(d.ToString("G",
                CultureInfo.CreateSpecificCulture("de-DE")));   // 01.02.2019 20:05:06

C# で日付をフォーマットされた文字列に変換する 3

© 2024 C# 入門