如何确定.NET 2.0中给定日期的给定日期是否在夏时制中?
时间:2020-03-05 18:47:54 来源:igfitidea点击:
我使用的是.NET 2.0,在"中等信任度"下运行(因此,不允许使用" TimeZoneInfo"和"注册表"选项)。我要问用户两个日期和一个时区,并且非常希望能够自动确定我是否需要调整DST的时区。
除非我有一些非常强大的支持,例如la TimeZoneInfo,否则这可能甚至不是一个有效的方案,首先要区分所有不同时区。
解决方案
回答
好吧,由于不包含" TimeZoneInfo",因此我们可能不会在框架本身中找到解决方案(但请不要在此引用我)。
在那种情况下,我们是否考虑过反射TimeZoneInfo
类并使用在那里找到的内容?
回答
我已经考虑过@Domenic,但我还是想保持合法性,而且我很确定这些信息无论如何都必须嵌入到框架中,或者以不需要授权的偷偷摸摸的方式从注册表中获取...
回答
在.NET 2.0中,我们必须自己编写代码。它涉及研究各个地区的夏令时法,并将其构建到我们自己的数据结构中。如果仅关心时区的一个子集(例如仅在美国),问题就会得到某种程度的简化,但是如果我们需要所有全球时区,则需要做很多工作,然后必须每次更新代码法律改变的几年。即使最新版本的.NET中的新时区对象也需要Windows更新,以使它们在法律变化时保持正确。
在此处,此处和此处查看更多信息。
回答
TZ数据库是时区规则的公共领域数据库,维护得很好。它们提供的数据也有一种已编译的格式,并且有很多库可用来读取已编译的数据,例如:ZoneInfo(tz数据库/ Olson数据库).NET API。
回答
此处的出色时区库:TZ4Net