【发布时间】:2010-09-16 15:53:56
【问题描述】:
我正在使用 C#.net - .Net fx 是 2.0,它不支持在不同时区之间进行转换。我已经编写了一个基于 UTC 的调度程序,但它在伦敦的 DTS 期间给出了 1 小时的错误。我需要一些解决方案,以便我可以通过正确的 DST 调整在相对于 UTC 的任何时区获得正确的时间。
【问题讨论】:
我正在使用 C#.net - .Net fx 是 2.0,它不支持在不同时区之间进行转换。我已经编写了一个基于 UTC 的调度程序,但它在伦敦的 DTS 期间给出了 1 小时的错误。我需要一些解决方案,以便我可以通过正确的 DST 调整在相对于 UTC 的任何时区获得正确的时间。
【问题讨论】:
绝对不可能改用 .NET 3.5 吗?它会让你的生活变得更加轻松。否则,您将不得不使用普通的 TimeZone 和 DaylightSavings 类,并且必须使用 P/Invoke 获取已知的时区。
William Stacey 有一个 blog post with some code to do this - 但我还没有尝试过,所以不能保证它的准确性。 (但根据我的经验,他通常相当出色 :) 如果对您没有帮助的话,毫无疑问会有类似的代码。
我相信他使用的 API 无法访问历史数据,顺便说一句。换句话说,它将假定 DST 总是 在 10 月的第一个星期日(或任何规则)开始生效,而不是知道规则随着时间的推移而改变。 .NET 3.5 中的 TimeZoneInfo 支持 OS 支持的历史数据。
【讨论】: