DateTime の ToString で曜日、月を英語表示させる

2010/03/31
★★

.NET では、カレントのカルチャで文字列がフォーマットされるため。以下のようにコーディングした場合は、カレントのカルチャである日本語で文字列が出力される。

string formatString = "ddd, dd MMM yyyy HH':'mm':'ss 'GMT'";
DateTime n = DateTime.Now;
System.Console.WriteLine(n.ToString(formatString));

上記のコードでの出力文字列は以下のようになる。

水, 31 3 2010 03:40:00 GMT

これを英語表記に変更する場合は、ToString メソッドのオーバーロードメソッドの第二引数に、フォーマットの元となるカルチャ ("en-US") を指定する。

string formatString = "ddd, dd MMM yyyy HH':'mm':'ss 'GMT'";
DateTime n = DateTime.Now;
SSystem.Console.WriteLine(n.ToString(formatString, new System.Globalization.CultureInfo("en-US")));

もちろん、毎回 CultureInfo を生成するのが、オーバーヘッドとなるのであれば、シングルトンで作成しても構わない。しかし、これがオーバーヘッドになることは少なく、別の個所のボトルネックを解消したほうがよい。

コメント (0)

コメントの投稿