2007-12-13

DateTime Formet 與 CultureInfo

今天收到一個問題,
是要將時間格式顯示為
Thu,13 Dec 2007 08:23:41 +08:00

大致上先想到的是取得格林威治時間
也就是用

DateTime.Now.ToUniversalTime().ToString()

因為台灣的時區是 +8,
所以取得的時間會是台灣時間減8小時.

他這樣的格式會顯示
2007/12/13 上午 08:23:41

然後在ToString()的格式加上"r"
如 :

DateTime.Now.ToUniversalTime().ToString("r");

這樣的結果會顯示
Thu, 13 Dec 2007 08:23:41 GMT

已經有點接近我們要的格式了,
不過還少了+08:00
查了一下,可以在格式中加個zzz來達成
但是zzz跟r似乎是不能一起使用.
所以改成如 :

DateTime.Now.ToUniversalTime().ToString("ddd,d MMM yyyy hh:mm:ss zzz");

這樣的結果變成
星期四,13 十二月 2007 08:23:41 +08:00

因為作業系統的地區與語言選項的設定是預設的中文(台灣)
所以會顯示中文字在時間字串中.
所以要再使用CultureInfo改一下.

System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo("en-US");
DateTime.Now.ToUniversalTime().ToString("ddd,d MMM yyyy hh:mm:ss zzz",ci);

這時資料就會是以英文(美國)的格式呈現,如下:
Thu,13 Dec 2007 08:23:41 +08:00

上面這樣大致上就可以得到我們要的結果,
不過,每次顯示都要再丟ci進去.
所以,如果不想每次都丟ci的話,
那就是再加一行code
如下

System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo("en-US");
System.Threading.Thread.CurrentThread.CurrentCulture = ci;
DateTime.Now.ToUniversalTime().ToString("ddd,d MMM yyyy hh:mm:ss zzz");

到此.收工.

參考資料 :

Standard DateTime Format Strings
http://msdn2.microsoft.com/en-us/library/az4se3k1(VS.71).aspx

Custom DateTime Format Strings Output Examples
http://msdn2.microsoft.com/en-us/library/hzz3aycd.aspx

CultureInfo 類別
http://msdn2.microsoft.com/zh-tw/library/system.globalization.cultureinfo(VS.80).aspx

張貼留言

一頁式詐騙網站進階了嗎?

之前facebook常常出現一頁式購物詐騙. 難道現在已經進級變成網站式的了嗎? 無意見看到"Ray Ban網站"在大特價. 連到網站上看,還真的每款眼鏡都下殺到一折以下, 買三支還免運. 而且網站的功能似乎還很完整. 這麼好康的事,我當然不能放過 要好好研究...