如果我使用NodaTime将未来的日期和时间转换为UTC,它将使用该未来日期的偏移(从全局偏移数据库中获知),如果突然发生特定时区的未来偏移因为政府更改或国家公投改变了它(就像在澳大利亚的QLD和SA中可能发生的那样)?现在我所有的未来日期都会因他们所做的任何改变而消失......似乎不太可能,但考虑到它仍然是一个有效的场景......
答案 0 :(得分:2)
首先,您需要更新数据以了解更改,并在代码中获取适当的IDateTimeZoneProvider
。对此的说明是in the user guide,但我们希望将来更简单。特别是:
这就是获取新数据的问题。你如何使用它是另一回事。如果已在数据库中存储了UTC,则稍后将新的时区数据应用于相同的时间戳时,最终会获得不同的本地时间。如果这不是您想要发生的事情 - 如果您的应用处理用户在当地时间安排事件 - 那么您应该存储本地时间和时区,以便更改时区数据是指事件发生时的瞬间变化,而不是对发生事件的当地时间的变化。当然,你需要考虑如果有人在 存在的当地时间安排一个事件会发生什么,但后来证明是一个"跳过的时间"时钟调整过去的地方。 Noda Time不能为您做出这些选择,但它确实允许您使用ZoneLocalMappingResolver
代表轻松地表达您的决定,可能是通过Resolvers
类创建或获得的。{/ p>