我刚刚开始与NodaTime合作。在我的应用程序中,用户创建一个事件并选择一个时区。无论我使用BCL(Windows)时区列表还是TZDB(Olson)列表(并且不要混合它们!),我都需要将时区id保存到我的数据库中,以便稍后重新创建时区 - 意识到时间。将时区id存储在数据库中安全吗?还是可以改变?
考虑到时区ID似乎有些随意,而且不是ISO标准,我可以依靠我以后在调用GetZoneOrNull时总是找到该ID吗?
我假设GetZoneOrNull方法是针对这种情况的防御;也就是说,当它传递一个不存在于它自己的Ids集合中的ID时。我的问题是:如果从ID集合中检索到ID,我可以相信GetZoneOrNull将来永远不会返回null吗?
但是如果一个Id可以从历史中消失,那么最好的策略是什么?
我会选择TZDB或Windows,倾向于奥尔森诚实,以防万一我需要与外界通话。我喜欢这样一个事实,即他们将旧的ID与新的ID相混淆,这让问题消失了。我不确定Windows是否会采用相同的约定,但您希望如此。由于这个疑问,我打算使用奥尔森。谢谢。 –