.NET開発者のためのブログメディア

C#のDateTime構造体で文字列に変換する際のフォーマット
2020年03月25日
C#では、「DateTime構造体」を使って日時を扱うことができます。DateTime構造体で日付を文字列に変換する方法はいくつかあるのですが、今回は次の2つの方法を紹介していきたいと思います。
- 標準書式指定文字をパラメーターに指定してToStringメソッドを呼び出す
- カスタム書式指定文字列をパラメーターに指定してToStringメソッドを呼び出す
- PG
- C#で日時を扱う方法って、2つあったんですね!知りませんでした。
- PL
- ソフトウェア開発の際は日時を扱うことも多いかと思います。しっかり覚えていってくださいね。
目次
方法1|標準日時書式指定子をパラメーターに指定してToStringメソッドを呼び出す
1つ目は、後述する「標準日時書式指定子」をパラメーターに指定してToStringメソッドを呼び出すという方法です。書式指定子とその概要は以下のとおりとなっています。
書式指定子 | 概要 |
---|---|
d | 短い形式の日付 |
D | 長い形式の日付 |
f | 完全な日時(短い形式の時刻) |
F | 完全な日時(長い形式の時刻) |
g | 一般の日時(短い形式の時刻) |
G | 一般の日時(長い形式の時刻) |
M, m | 月日 |
O, o | ラウンドトリップする日時 |
R, r | RFC1123 |
s | 並べ替え可能な日時 |
t | 短い形式の時刻 |
T | 長い形式の時刻 |
u | 並べ替え可能な日時(世界時刻) |
U | 完全な日時(世界時刻) |
Y, y | 年月 |
では、実際に上記の書式で今日の日付を取得してみましょう。
フォーマットは以下のとおりです。
1 |
DateTime.Now.ToString("書式指定子"); |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
using System; namespace SampleDateTime { class Program { static void Main(string[] args) { // 短い形式の日時 string today1 = DateTime.Now.ToString("d"); // 長い形式の日時 string today2 = DateTime.Now.ToString("D"); // 完全な日時(短い形式の時刻) string today3 = DateTime.Now.ToString("f"); // 完全な日時(長い形式の時刻) string today4 = DateTime.Now.ToString("F"); // 一般の日時(短い形式の時刻) string today5 = DateTime.Now.ToString("g"); // 一般の日時(長い形式の時刻) string today6 = DateTime.Now.ToString("G"); // 月日 string today7 = DateTime.Now.ToString("M"); // ラウンドトリップする日時 string today8 = DateTime.Now.ToString("O"); // RFC1123 string today9 = DateTime.Now.ToString("R"); // 並べ替え可能な日時 string today10 = DateTime.Now.ToString("s"); // 短い形式の時刻 string today11 = DateTime.Now.ToString("t"); // 長い形式の時刻 string today12 = DateTime.Now.ToString("T"); // 並べ替え可能な日時(世界時刻) string today13 = DateTime.Now.ToString("u"); // 完全な日時(世界時刻) string today14 = DateTime.Now.ToString("U"); // 年月 string today15 = DateTime.Now.ToString("Y"); Console.WriteLine(today1); Console.WriteLine(today2); Console.WriteLine(today3); Console.WriteLine(today4); Console.WriteLine(today5); Console.WriteLine(today6); Console.WriteLine(today7); Console.WriteLine(today8); Console.WriteLine(today9); Console.WriteLine(today10); Console.WriteLine(today11); Console.WriteLine(today12); Console.WriteLine(today13); Console.WriteLine(today14); Console.WriteLine(today15); Console.ReadLine(); } } } |
上記コードを実行すると、次のような結果になります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
2020/03/25 2020年3月25日 2020年3月25日 13:55 2020年3月25日 13:55:44 2020/03/25 13:55 2020/03/25 13:55:44 3月25日 2020-03-25T13:55:44.7686069+09:00 Wed, 25 Mar 2020 13:55:44 GMT 2020-03-25T13:55:44 13:55 13:55:44 2020-03-25 13:55:44Z 2020年3月25日 4:55:44 2020年3月 |
きちんと標準の書式で表示されていますね。
方法2|カスタム日時書式指定子をパラメーターに指定してToStringメソッドを呼び出す
では次に、「カスタム日時書式指定子」をパラメーターに指定する方法も見ていきましょう。
主な書式指定子とその概要は以下のとおりです。
書式指定子 | 概要 |
---|---|
yy | 年(4桁) |
MM | 月(0~12) |
dd | 日付(0~31) |
HH | 24時間形式の時間(0~23) |
hh | 12時間形式の時間(1~12) |
mm | 分(0~59) |
ss | 秒(0~59) |
こちらも先ほどと同じく、今日の日付を取得するコードを書いていきたいと思います。
今回は、年月日と時刻を「yyyy/mm/dd hh:mm:ss」の形式で取得します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
using System; namespace SampleCustomeDateTime { class Program { static void Main(string[] args) { string today = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"); Console.WriteLine(today); Console.ReadLine(); } } } |
実行結果はこちらです。
1 |
2020/03/25 14:09:18 |
このように、指定した書式で表示することができました。
- PG
- なるほど…。標準とカスタムどちらも上手く利用できそうですね。
- PL
- シンプルなのは標準ですが、カスタムの方が柔軟に対応できるんですよ。
DateTime構造体で日時を上手く扱おう
今回は、DateTime構造体を使って日時を文字列に変換する方法を紹介しました。「標準日時形式文字列」または「カスタム日時形式文字列」を利用すれば、任意の形式で日時を文字列に変換することができます。ぜひ、上手く活用してみてください。