2011-11-21 268 views
3

由於silverlight沒有完整的TimeZoneInfo,我需要自己實現一些功能。例如,這個信息之後來自.NET的TimeZoneInfo夏令時規則和轉換

ID: Central Standard Time 
    Display Name: (UTC-06:00) Central Time (US & Canada) 
    Standard Name:     Central Standard Time 
    Daylight Name:     Central Daylight Time ***Has Daylight Saving Time*** 
    Offset from UTC:      -6 hours, 0 minutes 
    Number of adjustment rules:       2 
    Adjustment Rules: 
     From 1/1/0001 12:00:00 AM to 12/31/2006 12:00:00 AM 
     Delta: 01:00:00 
     Begins at 2:00 AM on Sunday of week 1 of April 
     Ends at 2:00 AM on Sunday of week 5 of October 
     From 1/1/2007 12:00:00 AM to 12/31/9999 12:00:00 AM 
     Delta: 01:00:00 
     Begins at 2:00 AM on Sunday of week 2 of March 
     Ends at 2:00 AM on Sunday of week 1 of November 

我的問題是如何執行這樣的規則,當我需要從UTC轉換爲本地和回?

我應該UTC,。減去6小時,然後檢查是否凌晨2點之後的週日第2周的三月,然後加入1小時?

或者我應該採取UTC,檢查它是否是凌晨2點後,然後5。減去?

回答

1

夏令時間生效的時間是局部的時區,而不是UTC。所以你應該採取UTC時間,減去6個小時,做檢查,然後再加上小時如果適用。