我目前在 UTC -6 中央时区。TimeZoneInfo.Local.BaseUtcOffset 返回 -6,但 DateTimeOffset.Now.Offset 返回 -5。我不知道为什么这些会有所不同,而且我找不到可以解释这一点的文档。一个尊重夏令时而另一个不尊重夏令时吗?如果我执行 someDateTimeOffset.UtcDateTime.ToLocalTme(),我也会得到一个 DateTime 偏移量 -6 小时。
问问题
5932 次
2 回答
12
根据以下文档TimeZoneInfo.BaseUtcOffset
:
指示当前时区标准时间与协调世界时 (UTC) 之间时差的对象。
和
因为 BaseUtcOffset 是 TimeZoneInfo 对象而不是 TimeZoneInfo.AdjustmentRule 对象的属性,所以 TimeZoneInfo 类将单个 UTC 偏移应用于所有时区的调整。
而返回本地时区的当前时间与 UTCDateTimeOffset.Now.Offset
之间的差异。不是当前时区的标准时间。中央时间目前正在观察夏令时,因此存在差异。
如果您想在任何特定时间从 a 获取偏移量,该文档还为您提供了有关使用什么的指导TimeZoneInfo
:
该
BaseUtcOffset
属性返回 UTC 与时区标准时间之间的差异;该GetUtcOffset
方法返回 UTC 与特定时间点的时区时间之间的差异。如果我执行 someDateTimeOffset.UtcDateTime.ToLocalTme(),我也会得到一个 DateTime 偏移量 -6 小时。
那么这将取决于究竟有什么价值someDateTimeOffset
。例如,如果是在冬季,您肯定会看到 6 小时的偏移量。
于 2012-09-20T20:19:32.157 回答
1
我可能是错的,但我认为
DateTimeOffset.Now.Offset
考虑到夏令时,而另一个则不考虑。
于 2012-09-20T20:15:39.697 回答