DateTime.ToString()の書式指定とカルチャ(ロケール)を指定した書式変換の仕方について記述します
以下の様に日付をフォーマットすると、曜日の部分が日本語で表示されます
var dt = new DateTime(2015,3,27,13,20,40); var result = dt.ToString(@"yyyy/MM/dd HH:mm:ss ddd"); result変数の中身 → 2015/03/27 13:20:40 金
これはカルチャ(ロケール)が日本語(jp-JP)に指定されている為です。
上記コードは
var result = dt.ToString(@"yyyy/MM/dd HH:mm:ss ddd", System.Globalization.CultureInfo.CurrentCulture);
と、「CultureInfo.CurrentCulture」を指定しているのと同じになります。
曜日を英語表記にしたい
“金”とか”土”とかではなく、”Fri”,”Sat”とかに変換したい場合は、カルチャ(ロケール)にEnglish(United State)を指定します。
English(United State)のカルチャ名は「en-US」です。
DateTime#ToStringの二番目の引数にカルチャを渡せますので、この引数にen-USなCultureを指定します。
なお、こういったカルチャ名はNational Language Support (NLS) API Reference (各国語サポート (NLS: National Language Support) API のリファレンス)に表で記載されています。
では、英語で出力してみます
var dt = new DateTime(2015,3,27,13,20,40); var culture = new System.Globalization.CultureInfo("en-US"); var result = dt.ToString(@"yyyy/MM/dd HH:mm:ss ddd", culture); result変数の中身 → 2015/03/27 13:20:40 Fri
曜日の部分が「Fri」となりました。
var culture = new System.Globalization.CultureInfo("en-US");
でen-USなCUltureのインスタンスを生成し、DateTime.ToStringメソッドの引数に指定しています。
カルチャ(ロケール)に依存する書式指定子
以下が、カルチャ(ロケール)に依存する書式指定子の一部です。
書式指定子 | 内容 | 例(ja) | 例(en) |
---|---|---|---|
ddd | 曜日の省略名 | 金 | Fri |
dddd | 曜日の完全名 | 金曜日 | Friday |
MMM | 月の省略名 | 3 | Mar |
MMMM | 月の完全名 | 3月 | March |
tt | 午前午後 | 午後 | PM |
gg | 年号 | 西暦 | A.D. |
他にもいくつかありますが、まぁこんなことろです