> 作業効率UP!! オススメのモバイルモニターを紹介

【C#】DateTime.ToString() で日付の書式設定をするには?

  • URLをコピーしました!

DateTime 構造体型を文字列に変換したい」ていう場面はよくあると思います。

単に、DateTime.ToString() とするだけで文字列に変換できますが、特定のフォーマットに合わせたい場合は少し工夫が必要です。

この記事で日付のフォーマットを指定して、文字列に変換する方法を分かりやすく説明しています。

記事の内容

日付の書式設定の仕方

C#では、DateTime.ToString メソッドの引数に Format を指定すると、指定した書式で文字列を返します。

DateTime 構造体型を文字列に変換する際によく利用する方法です。

DateTimeオブジェクト.ToString(“カスタム日時書式指定子“);

 

例えば、DateTime 構造体型を年月日だけの文字列にしたい場合は、カスタム日時書式指定子に「yyyy/MM/dd」のように指定をします。

これをコードにすると次のようになります。

//現在時刻を取得
var dateTime = DateTime.Now;

//フォーマットを指定して文字列に変換  
var dateTimeStr = dateTime.ToString("yyyy/MM/dd");

//文字列を出力
Debug.WriteLine(dateTimeStr);

//出力結果 : 2022/04/01

 

カスタム日時書式指定子については、Microsoftの公式ページに定義されています。詳しく確認したい方は「ここ」から公式サイトへ移動することができます。

 

使用頻度が高い書式

ここからはDateTimeを文字列にする場合によく使用する「カスタム日時書式指定文字列」を紹介します。

年月日

yy/M/d

例)22/4/1

年(00~99)、月(1~12)、日(1~31)で年月日を表現します。

//2022-04-01 03:06:01.058 を指定
var dateTime = new DateTime(2022, 4, 1, 3 , 6, 1, 58);
            
//フォーマットを指定して文字列に変換
var dateTimeStr = dateTime.ToString("yy/M/d"); 
            
//文字列を出力
Debug.WriteLine(dateTimeStr);

//出力結果 : 22/4/1

 

yyyy/MM/dd

例)2022/04/01

年(0001~9999)、月(01~12)、日(01~31)で年月日を表現します。1桁の月または日は先頭に”0”が付与されます。

//2022-04-01 03:06:01.058 を指定
var dateTime = new DateTime(2022, 4, 1, 3 , 6, 1, 58);
            
//フォーマットを指定して文字列に変換
var dateTimeStr = dateTime.ToString("yyyy/MM/dd"); 
            
//文字列を出力
Debug.WriteLine(dateTimeStr);

//出力結果 : 2022/04/01

 

yyyy年MM月dd日

例)2022年04月01日

年(0001~9999)、月(01~12)、日(01~31)で年月日を表現します。1桁の月または日は先頭に”0”が付与されます。

//2022-04-01 03:06:01.058 を指定
var dateTime = new DateTime(2022, 4, 1, 3 , 6, 1, 58);
            
//フォーマットを指定して文字列に変換
var dateTimeStr = dateTime.ToString("yyyy年MM月dd日"); 
            
//文字列を出力
Debug.WriteLine(dateTimeStr);

//出力結果 : 2022年04月01日

 

ggyy年MM月dd日

例)令和04年04月01日

西暦ではなく、和暦で表現します。1873年1月1日より前の西暦を正確な和暦で表現することはできません。1868年9月8日より前の西暦を和暦で表示しようとするとエラー(ArgumentOutOfRangeException)になります。

//2022-04-01 03:06:01.058 を指定
var dateTime = new DateTime(2022, 4, 1, 3, 6, 1, 58);

//DateTime構造体を和暦の文字列に変換する
CultureInfo Japanese = new CultureInfo("ja-JP");
Japanese.DateTimeFormat.Calendar = new JapaneseCalendar();


//フォーマットを指定して文字列に変換
var dateTimeStr = dateTime.ToString("ggyy年MM月dd日", Japanese);

//文字列を出力
Debug.WriteLine(dateTimeStr);

//出力結果 : 令和04年04月01日

 

年月日時分秒

yy/M/d H:m:s

例)22/4/1 3:6:1

年(00~99)、月(1~12)、日(1~31)、時(0~23)、分(0~59)、秒(0~59)で年月日時分秒を表現します。

//2022-04-01 03:06:01.058 を指定
var dateTime = new DateTime(2022, 4, 1, 3 , 6, 1, 58);
            
//フォーマットを指定して文字列に変換
var dateTimeStr = dateTime.ToString("yy/M/d H:m:s"); 
            
//文字列を出力
Debug.WriteLine(dateTimeStr);

//出力結果 : 22/4/1 3:6:1

 

yyyy/MM/dd HH:mm:ss

例)2022/04/01 03:06:01

年(0001~9999)、月(01~12)、日(01~31)、時(00~23)、分(00~59)、秒(00~59)で年月日時分秒を表現します。1桁の月、日、時、分、秒は先頭に”0”が付与されます。

//2022-04-01 03:06:01.058 を指定
var dateTime = new DateTime(2022, 4, 1, 3 , 6, 1, 58);
            
//フォーマットを指定して文字列に変換
var dateTimeStr = dateTime.ToString("yyyy/MM/dd HH:mm:ss"); 
            
//文字列を出力
Debug.WriteLine(dateTimeStr);

//出力結果 : 2022/04/01 03:06:01

 

yyyy年MM月dd日 HH時mm分ss秒

例)2022年04月01日 03時06分01秒

年(0001~9999)、月(01~12)、日(01~31)、時(00~23)、分(00~59)、秒(00~59)で年月日時分秒を表現します。1桁の月、日、時、分、秒は先頭に”0”が付与されます。

//2022-04-01 03:06:01.058 を指定
var dateTime = new DateTime(2022, 4, 1, 3 , 6, 1, 58);
            
//フォーマットを指定して文字列に変換
var dateTimeStr = dateTime.ToString("yyyy年MM月dd日 HH時mm分ss秒"); 
            
//文字列を出力
Debug.WriteLine(dateTimeStr);

//出力結果 : 2022年04月01日 03時06分01秒

 

yyyy年MM月dd日 tt hh時mm分ss秒

例)2022年04月01日 午前 03時06分01秒

カスタム書式指定子 ”tt” は、午前午後を表現します。0:00:00 (午前 0 時) から 11:59:59.999 までは”午前”、12:00:00 (正午) から 23:59:59.999 までは”午後”になります。

//2022-04-01 03:06:01.058 を指定
var dateTime = new DateTime(2022, 4, 1, 3 , 6, 1, 58);
            
//フォーマットを指定して文字列に変換
var dateTimeStr = dateTime.ToString("yyyy年MM月dd日 tt hh時mm分ss秒"); 
            
//文字列を出力
Debug.WriteLine(dateTimeStr);

//出力結果 : 2022年04月01日 午前 03時06分01秒

 

yyyyMMddHHmmss

例)20220401030601

区切り記号を排除することで、全て数値として文字列に変換することができます。

//2022-04-01 03:06:01.058 を指定
var dateTime = new DateTime(2022, 4, 1, 3 , 6, 1, 58);
            
//フォーマットを指定して文字列に変換
var dateTimeStr = dateTime.ToString("yyyyMMddHHmmss"); 
            
//文字列を出力
Debug.WriteLine(dateTimeStr);

//出力結果 : 20220401030601

 

曜日

ddd

例)金

カスタム書式指定子 ”ddd” は曜日の省略を表現します。

曜日はWindowsの「地域設定」で選択されている国によって表現が変わります。通常は地域設定は「日本」になっていると思うので、日本語で表現されます。

//2022-04-01 03:06:01.058 を指定
var dateTime = new DateTime(2022, 4, 1, 3 , 6, 1, 58);
            
//フォーマットを指定して文字列に変換
var dateTimeStr = dateTime.ToString("ddd"); 
            
//文字列を出力
Debug.WriteLine(dateTimeStr);

//出力結果 : 金

 

dddd

例)金曜日

カスタム書式指定子 ”dddd” は曜日(省略無し)を表現します。

//2022-04-01 03:06:01.058 を指定
var dateTime = new DateTime(2022, 4, 1, 3 , 6, 1, 58);
            
//フォーマットを指定して文字列に変換
var dateTimeStr = dateTime.ToString("dddd"); 
            
//文字列を出力
Debug.WriteLine(dateTimeStr);

//出力結果 : 金曜日

 

その他

\\

例)03 h 06 m 01 s

カスタム書式指定子の文字を使いたい場合は、エスケープします。エスケープを宣言するには円記号(\\)を使い、カスタム書式指定子の前に付けます。

//2022-04-01 03:06:01.058 を指定
var dateTime = new DateTime(2022, 4, 1, 3 , 6, 1, 58);
            
//フォーマットを指定して文字列に変換
var dateTimeStr = dateTime.ToString("HH \\h mm \\m ss \\s"); 
            
//文字列を出力
Debug.WriteLine(dateTimeStr);

//出力結果 : 03 h 06 m 01 s

 

最後に

もっと DateTime 構造体型について知りたい方は、こちらの記事もお勧めです。

あわせて読みたい
【C#】DateTimeの使い方とフォーマットの種類を紹介! C#ではDateTimeを扱う方法を知りたい方におすすめ記事です。 DateTime型の基本的な使い方をはじめ、DateTimeを文字列に変換する時に指定できるフォーマットについて詳し...

以上、最後まで読んで頂きありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

プログラムが大好きなパンダです。
主に C# を使ってデスクトップアプリやモバイルアプリなどを開発しています。

当ブログでは C# の使い方や WPF または .NET MAUI を使ったサンプルアプリなど発信しています。

コメント

コメントする

CAPTCHA


記事の内容