[永久保存版][C#] カスタム日付フォーマット:C#での日付と時刻の書式設定方法

スポンサーリンク

はじめに

C#では、日時のフォーマットを指定して出力することが非常に簡単に行えます。特に、アプリケーションで日付や時刻を特定の形式で表示したい場合、カスタム日付フォーマットを使うことで柔軟に対応できます。本記事では、DateTimeDateTimeOffsetを使って、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 のカスタムフォーマット

DateTimeOffsetDateTime と同様に、カスタムフォーマットで日時を出力できます。さらに、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#では、DateTimeDateTimeOffsetを使って、カスタムフォーマットで日時を柔軟に設定できます。フォーマットのパターンを活用することで、任意の表示形式で日時を管理でき、グローバルなアプリケーションでも文化(カルチャ)に応じた適切な出力が可能です。

 

Please follow and like us:

コメント

タイトルとURLをコピーしました