星期二, 2月 08, 2011

時區 (TimeZones) 的下拉選單

常在註冊一些論壇或是網站的時候,都會看到您目前屬於那一個時區的下拉式選單,如果這功能用 .net 要如何做呢?

image

在之前的方法都是寫死的,需要用就去網路查一下資料,到底有哪些時區可以選,這個東西通常都是寫好包起來,等有需要在拿出來使用,還有也要寫一下由使用者時區來顯示當地時間的 method,其實不算難寫,只是有點麻煩,不過微軟佛心來了,幫我們把這個東西整理好了,讓我們不用花心思在這個沒啥營養的東西,先看 Code 吧!

ReadOnlyCollection<TimeZoneInfo> tzi = TimeZoneInfo.GetSystemTimeZones();
DateTime dt = DateTime.Now;
foreach(var item in tzi)
{
var t = TimeZoneInfo
.ConvertTimeBySystemTimeZoneId(dt,TimeZoneInfo.Local.Id,item.Id);
var display = string.Concat(t," ==> ",item.DisplayName);
Console.WriteLine(display);
}

image

上面這段 Code Snippet 我是把當地的時間還有時區印出來,如果在 dropdownlist 需要用的話,下列這樣寫法就可以了

ReadOnlyCollection<TimeZoneInfo> tzi = TimeZoneInfo.GetSystemTimeZones();
DateTime dt = DateTime.Now;
foreach (var timeZone in tzi)
{
ddlTimeZone.Items.Add(new ListItem(timeZone.DisplayName, timeZone.Id));
}

參考:
http://msdn.microsoft.com/zh-tw/library/system.timezoneinfo.getsystemtimezones.aspx
http://www.dotnetcurry.com/ShowArticle.aspx?ID=593

沒有留言: