2013年10月15日 星期二

取得時區資料

如果想要取得時區的資料,可以用以下的寫法
   
var dateFormats=CultureInfo.CurrentCulture
                           .DateTimeFormat;
var timeZones = TimeZoneInfo.GetSystemTimeZones();
foreach (TimeZoneInfo timeZone in timeZones)
{
   Console.WriteLine(timeZone.DisplayName)
}

那如果要取得英文或日文的時區資料呢?
網路上有人貼了一段寫法
var cultureinfo = CultureInfo.
                    CreateSpecificCulture("en-US");
var dateFormats = cultureinfo.DateTimeFormat; 
var timeZones = TimeZoneInfo.GetSystemTimeZones();
foreach (TimeZoneInfo timeZone in timeZones)
{
   Console.WriteLine(timeZone.DisplayName)
}

借由建立一個指定語系的CultureInfo,來做到變換時區語言的效果
但其實這段程式碼是不會Work的

我們可以看MSDN上關於TimeZoneInfo.GetSystemTimeZones()的說明
http://msdn.microsoft.com/zh-tw/library/system.timezoneinfo.getsystemtimezones.aspx

"GetSystemTimeZones 方法會從登錄中 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Time Zones 機碼的子機碼擷取所有可用的時區資訊"

所以也就是如果要取得其他語系的時區資料,要改變系統的預設語系才會有效果,而改變系統預設語系的做法網路上有很多文章可參考,在此就不做說明囉!

沒有留言: