在.NET 2.0中,我如何确定给定时区的特定日期是否处于夏令时?

3
我正在使用.NET 2.0,在中等信任级别下运行(因此不允许使用TimeZoneInfo和注册表)。我要求用户提供两个日期和一个时区,并希望能够自动确定是否需要调整夏令时的时区。除非我拥有一些非常强大的支持(例如TimeZoneInfo)来区分所有不同种类的时区,否则这可能甚至都不是一个有效的场景。
5个回答

2

2

这里有一个优秀的时区库:TZ4Net


2
在.NET 2.0中,你必须自己编写代码。它涉及到研究各个地区的夏令时法律,并将其构建到你自己的数据结构中。如果你只关心一部分时区,例如只在美国,问题会有所简化,但如果你需要所有全球时区,你就需要做很多工作,而且当法律变化时,代码必须每隔几年更新一次。即使是最新版本的.NET中的新时区对象,也需要Windows更新才能保持正确性。
更多信息请查看这里这里这里

1
更不用说,如果您想准确确定历史日期的夏令时状态,除了需要保持最新状态外,还必须存档所有曾经适用于这些时区的夏令时规则。据我所知,目前没有任何操作系统或库能够做到这一点。 - Mihai Limbășan

0

嗯,既然TimeZoneInfo被排除在外,你可能不会在框架本身中找到解决方案(但是不要引用我的话)。

如果是这种情况,您是否考虑过反射TimeZoneInfo类并使用您在那里找到的内容?


0

@多米尼克, 我已经考虑过了,但我更愿意遵守法律,而且我相当确定这些信息必须嵌入到框架中,或者以一些不需要权限的隐蔽方式从注册表中获取...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接