C#

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

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には現在時刻の取得や日付を比較するメソッドが用意されています。文字列を変換する場合はフォーマットを指定すれば、指定した形式で文字列を出力することが可能です。...

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

プログラミングを学習したいなら…

プログラミングスキルを身に付けるなら、プログラミングを効率良く学べる
プログラミングスクール」がオススメです。

特にこんな方にオススメ!!
これからエンジニアを目指したい
プログラミングの専門性を高めたい
プログラミングを学んで副業をしたい
エンジニアに転職して年収をアップさせたい

プログラミングを触ったことがない未経験からでも、プログラミングスクールで学習すれば、エンジニアへ就職・転職することも可能です。

あなたの「行動力」と「やる気」で、あなたの人生を大きく変えるチャンスになることでしょう。

プログラミングスクールに興味がある方は是非チェックしてみてください。

> プログラミングを学ぶ <

COMMENT

メールアドレスが公開されることはありません。

CAPTCHA