【发布时间】:2017-04-29 20:12:38
【问题描述】:
我对臭名昭著的夏令时有疑问。
我有一个数据点列表,一年中每个小时一个。为了检查是否所有数据点都存在,我创建了一个时间迭代器,如下所示:
DateTime timeIterator = new DateTime(year, 1, 1, 0, 0, 0);
用它迭代
timeIterator = timeIterator.AddHours(1);
如果时间点出现在列表中,则检查每次迭代。
问题出现在夏令时。我以 2014 年为例,时钟在 3 月 30 日从 0200 移动到 0300。所以,在 0159 之后是 0300。但是 DateTime.AddHours() 完全忽略了夏令时。如果 timeIterator 在 {30.03.2014 01:00:00} 并且我调用 AddHours(1) 我得到 {30.03.2014 02:00:00} 这显然不存在。
如果我现在针对这个数据点测试列表,它(自然)不在列表中,我会抛出错误的“丢失数据点错误”。
如何检查我的 DateTime 是否为有效时间点?
提前致谢,
弗兰克
【问题讨论】: