由于 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 小时,然后检查是否在 3 月第 2 周星期日凌晨 2 点之后,然后加上 1 小时?
或者我应该采用 UTC,检查它是否在凌晨 2 点之后,然后减去 5?
最佳答案
夏令时生效的时间是该时区的本地时间,而不是 UTC。因此,您应该采用 UTC 时间,减去 6 小时,进行检查,然后在适用的情况下重新加上该小时。
关于c# - 夏令时规则和转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8219792/