今天收到一個問題,
是要將時間格式顯示為
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
沒有留言:
張貼留言