如何在C#中的任何其他时区将UTC时间转换为时间

我在C#.net工作 – .Net fx是2.0,它不支持在不同时区之间进行转换。 我已经编写了一个基于UTC的调度程序,但它在伦敦的DTS期间给出了1小时的错误。 我需要一些解决方案,以便我可以在相对于UTC的任何时区中使用正确的DST调整来获取正确的时间。

是否完全无法改变.NET 3.5? 它会让你的生活变得更加轻松。 否则,你会遇到普通的TimeZone和DaylightSavings类,以及必须使用P / Invoke获取已知的时区。

威廉·斯泰西(William Stacey)有一篇博文,里面有一些代码可以做到这一点 – 但我还没有尝试过,所以不能保证它的准确性。 (根据我的经验,他通常很不错:)毫无疑问,如果那个代码没有帮助你的代码。

我相信他使用的API无法访问历史数据,顺便说一句。 换句话说,它将假设DST 总是在10月的第一个星期日(或任何规则)开始,而不是知道规则随着时间的推移而改变。 .NET 3.5中的TimeZoneInfo支持操作系统所在的历史数据。