我正在使用C#.net进行工作,.Net fx版本为2.0,不支持在不同的时区之间进行转换。我已经基于UTC编写了一个调度程序,但在伦敦的DTS期间会出现1小时的错误。我需要一些解决方案,以便可以获取相对于UTC的任何时区的正确时间,并进行正确的夏令时调整。
改到.NET 3.5是完全不可能的吗?这会让你的生活轻松得多。否则,你只能使用普通的TimeZone和DaylightSavings类,并且必须使用P/Invoke获取已知时区。
William Stacey在他的博客文章中提供了一些代码 - 但我没有尝试过,无法保证其准确性(在我看来,他通常做得相当好:)。如果那个代码对你没有帮助,肯定还有类似的代码。
我相信他正在使用的API没有访问历史数据的权限。换句话说,它将假设DST总是在10月的第一个星期日开始(或任何规则),而不知道规则随时间而改变。.NET 3.5中的TimeZoneInfo支持操作系统具有历史数据的情况。