2011-11-21 267 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个小时,做检查,然后再加上小时如果适用。