はじめに
C#では、日時のフォーマットを指定して出力することが非常に簡単に行えます。特に、アプリケーションで日付や時刻を特定の形式で表示したい場合、カスタム日付フォーマットを使うことで柔軟に対応できます。本記事では、DateTime
やDateTimeOffset
を使って、C#での日付と時刻のカスタムフォーマットを設定する方法を解説します。
標準フォーマットとカスタムフォーマットの違い
C#では、日付と時刻のフォーマットには大きく分けて標準フォーマットとカスタムフォーマットの2種類があります。
- 標準フォーマット: “d”, “D”, “t”, “T”など、指定されたシンボルに基づいた定型的なフォーマット。
- カスタムフォーマット: “yyyy/MM/dd”, “HH:mm” など、自分で指定した書式に従って日時をフォーマット。
標準フォーマットは定型的な表示に適していますが、アプリケーションで特定の書式を求める場合はカスタムフォーマットが必要です。
DateTime のカスタムフォーマット設定方法
DateTime.ToString()
メソッドを使用して、日時を指定されたフォーマットで出力することができます。カスタムフォーマットの場合、書式を文字列として指定します。
DateTime specificDate = new DateTime(2024, 10, 7, 14, 30, 45); string formattedDate = specificDate.ToString("yyyy/MM/dd HH:mm:ss"); Console.WriteLine(formattedDate); // 出力: 2024/10/07 14:30:45
上記の例では、"yyyy/MM/dd HH:mm:ss"
というカスタムフォーマットを使って、特定の日付と時刻を表示しています。この方法で、任意のフォーマットを使ってDateTime
を出力できます。
カスタム日付フォーマットのパターン一覧
C#では、カスタムフォーマットに使用できるパターンが豊富に用意されています。以下は、よく使われるパターンの一覧です。
パターン | 説明 | 例 |
---|---|---|
yyyy |
西暦(4桁) | 2024 |
yy |
西暦(2桁) | 24 |
MM |
月(2桁) | 10 |
M |
月(1桁または2桁) | 7, 10 |
dd |
日(2桁) | 07 |
d |
日(1桁または2桁) | 7, 10 |
HH |
24時間形式の時(2桁) | 14 |
H |
24時間形式の時(1桁または2桁) | 7, 14 |
hh |
12時間形式の時(2桁) | 02 |
h |
12時間形式の時(1桁または2桁) | 2 |
mm |
分(2桁) | 30 |
m |
分(1桁または2桁) | 7, 30 |
ss |
秒(2桁) | 45 |
s |
秒(1桁または2桁) | 5, 45 |
fff |
ミリ秒(3桁) | 123 |
tt |
午前/午後の表示 | AM, PM |
日付フォーマットの例
DateTime now = DateTime.Now; Console.WriteLine(now.ToString("yyyy/MM/dd")); // 例: 2024/10/07 Console.WriteLine(now.ToString("MM-dd-yyyy")); // 例: 10-07-2024 Console.WriteLine(now.ToString("dddd, MMMM dd")); // 例: Monday, October 07
DateTimeOffset のカスタムフォーマット
DateTimeOffset
も DateTime
と同様に、カスタムフォーマットで日時を出力できます。さらに、DateTimeOffset
ではタイムゾーンのオフセット情報もフォーマットに含めることが可能です。
DateTimeOffset
のフォーマット例
DateTimeOffset currentOffsetTime = DateTimeOffset.Now; string formattedOffsetTime = currentOffsetTime.ToString("yyyy-MM-dd HH:mm:ss zzz"); Console.WriteLine(formattedOffsetTime); // 例: 2024-10-07 14:30:45 +09:00
上記の例では、zzz
を使用してタイムゾーンのオフセット情報(+09:00など)を表示しています。
文化(カルチャ)に依存したフォーマット
日時の書式は国や地域ごとに異なります。C#では、CultureInfo
クラスを使用して、特定の文化に依存したフォーマットを指定することができます。これにより、異なる文化圏に応じた日付フォーマットが容易に実現できます。
カルチャを指定したフォーマット
using System.Globalization; DateTime date = new DateTime(2024, 10, 7); CultureInfo jpCulture = new CultureInfo("ja-JP"); CultureInfo usCulture = new CultureInfo("en-US"); Console.WriteLine(date.ToString("D", jpCulture)); // 例: 2024年10月7日 Console.WriteLine(date.ToString("D", usCulture)); // 例: Monday, October 7, 2024
カルチャを考慮した時間フォーマット
DateTime time = new DateTime(2024, 10, 7, 14, 30, 45); CultureInfo frCulture = new CultureInfo("fr-FR"); CultureInfo deCulture = new CultureInfo("de-DE"); Console.WriteLine(time.ToString("f", frCulture)); // 例: lundi 7 octobre 2024 14:30 Console.WriteLine(time.ToString("f", deCulture)); // 例: Montag, 7. Oktober 2024 14:30
CultureInfo クラスを活用することで、異なる地域に適した日時フォーマットを自動的に設定することができます。
使用例まとめ
24時間形式の日時
DateTime dateTime = DateTime.Now; string formattedDateTime = dateTime.ToString("yyyy/MM/dd HH:mm:ss"); Console.WriteLine(formattedDateTime); // 例: 2024/10/07 14:30:45
12時間形式の日時(午前/午後表示)
DateTime dateTime = DateTime.Now; string formattedDateTime = dateTime.ToString("yyyy/MM/dd hh:mm:ss tt"); Console.WriteLine(formattedDateTime); // 例: 2024/10/07 02:30:45 PM
タイムゾーンを含む日時表示
DateTimeOffset dateTimeOffset = DateTimeOffset.Now; string formattedDateTimeOffset = dateTimeOffset.ToString("yyyy/MM/dd HH:mm:ss zzz"); Console.WriteLine(formattedDateTimeOffset); // 例: 2024/10/07 14:30:45 +09:00
まとめ
C#では、DateTime
やDateTimeOffset
を使って、カスタムフォーマットで日時を柔軟に設定できます。フォーマットのパターンを活用することで、任意の表示形式で日時を管理でき、グローバルなアプリケーションでも文化(カルチャ)に応じた適切な出力が可能です。
コメント