DateTimeオブジェクトのToString()メソッドを使用することで、日付や時刻を文字列としてフォーマットし、出力することができます。
この記事では、DateTime.ToString()の基本的な使用方法を、引数なしの場合とフォーマット指定ありの場合の両方を紹介します。また、時間の24時間表記と12時間表記の違いや、時分秒の桁数に関するオプションについても説明します。
引数なしのToString()
引数なしでToString()メソッドを使用すると、DateTimeオブジェクトはシステムのロケール設定に基づいた標準的な日付と時刻の形式で文字列に変換されます。これは、特にフォーマットにこだわりがない場合に便利です。
DateTime now = DateTime.Now;
string dateString = now.ToString();
Console.WriteLine(dateString);
このコードを実行すると、例えば2024-02-01 12:34:56のように、実行時のシステムのロケールに応じたフォーマットで現在の日付と時刻が出力されます。
フォーマット指定ありのToString()
ToString()
メソッドにフォーマット文字列を指定することで、日付や時刻をより具体的な形式で文字列化できます。フォーマット文字列では、yyyy
で年を4桁で、MM
で月を2桁で、dd
で日を2桁で表現します。時刻に関しても、HH
を使用すると24時間表記、hh
を使用すると12時間表記になります。分はmm
、秒はss
で表現します。
24H表記の例
DateTime now = DateTime.Now;
string format = "yyyy-MM-dd HH:mm:ss";
string dateString = now.ToString(format);
Console.WriteLine(dateString);
このコードは、2024-02-01 23:45:67のように、24時間表記で年月日と時分秒を出力します。
12時間表記の例
string format = "yyyy-MM-dd hh:mm:ss tt";
string dateString = now.ToString(format);
Console.WriteLine(dateString);
この場合、ttを追加することでAMまたはPMの表示も含まれ、2024-02-01 11:45:67 PMのように12時間表記で出力されます。
時分秒の桁数について
フォーマット指定において、時分秒を常に2桁で表示するにはHH、mm、ssを使用します。一方で、必要に応じて1桁表示を許容する場合は、H、m、sを使用します。この違いは、特に時刻が03:05:07のように先頭に0が来る場合に顕著です。2桁指定の場合はそのまま表示されますが、1桁指定をすると3:5:7のように表示されます。
まとめ
良く使いそうなフォーマットの一覧です。
フォーマット指定 | 説明 | 例 |
---|---|---|
yyyy-MM-dd HH:mm:ss | 年月日と24時間表記の時分秒 | 2024-02-01 23:45:56 |
yyyy-MM-dd hh:mm:ss tt | 年月日と12時間表記の時分秒(AM/PM表示) | 2024-02-01 11:45:56 PM |
yyyy-MM-dd H:mm:ss | 年月日と24時間表記の時分秒(時の1桁表記許容) | 2024-02-01 3:45:56 |
yyyy-MM-dd h:mm:ss tt | 年月日と12時間表記の時分秒(時の1桁表記許容、AM/PM表示) | 2024-02-01 3:45:56 PM |
HH:mm:ss | 24時間表記の時分秒 | 23:45:56 |
hh:mm:ss tt | 12時間表記の時分秒(AM/PM表示) | 11:45:56 PM |
H:mm:ss | 24時間表記の時分秒(時の1桁表記許容) | 3:45:56 |
h:mm:ss tt | 12時間表記の時分秒(時の1桁表記許容、AM/PM表示) | 3:45:56 PM |