我在GetUtcoffset()
对象中使用函数TimeZoneInfo
来获取特定日期时间的Utc偏移值。通常,夏令时会遵循特定的规则,例如“ 从10月的第一个星期日开始,到4月的第一个星期日结束”(美国东部标准时间),因此我相信这样的结果函数产生。
但我确实想知道,如果夏令时由于政府的决定而延迟或改变,结果将会怎样?过去,有几次澳大利亚政府违反了某些事件的夏令时规则。在这种情况下,调用GetUtcoffset()
会产生不正确的结果,还是库足够聪明以至于“偶尔”从Internet上的某些来源获取夏令时更新?
用法: 我正在设计一个停车管理系统。一个数据库在时区不同的多个客户端之间共享。停车事件的时间可以作为法庭上的证据,因此,正确安排停车时间非常重要。当系统收到车辆停放的通知时,系统将生成到达时间。鉴于通知可能来自不同时区的远程站点,我想知道我是否可以可靠地使用时区在客户端站点上锻炼当前日期时间。
示例:
string clientTimeZoneId = "AUS Eastern Standard Time";
var utcTime = DateTime.UtcNow;
var clientTimeZone = TimeZoneInfo.FindSystemTimeZoneById(clientTimeZoneId);
var arrivalTime = utcTime.Add(clientTimeZone.GetUtcOffset(utcTime));
这是GetUtcOffset
函数变得重要的地方。鉴于在2019-2020年“ AUS东部标准时间”的夏令时于2020年4月5日结束,因此在6日调用GetUtcOffset将提供+10:00:00。但是,如果出于任何原因(例如奥运会的事件),DST扩展到了10,则arrivalTime
可能会错误地表示一个小时,具体取决于GetUtcOffset
的值。
目前,我们的系统管理员必须每年手动更新数据库中的夏时制日期,但是不必这样做会很高兴。我不确切知道政府在这些事件中做了什么,但是他们必须将更新发送到某个地方,否则受影响时区中的所有计算机的时间都不正确。因此,回到我最初的问题,TimeZoneInfo将从任何“ DST源”中获取数据吗?