我刚刚开始使用Nodatime。在我的应用程序中,用户创建事件并选择时区。无论我是使用BCL(Windows)时区列表还是TZDB(OLSON)列表(并且不混合它们!),我都需要将时区域的ID持续到数据库,以便以后可以重新创建TimeZone - 意识时间。
鉴于时区ID似乎是任意的,并且不是ISO标准,我可以依靠以后始终找到该ID吗?
我假设getzoneornull方法是防御这种情况的辩护。也就是说,当它传递到其自己的IDS集合中不存在的ID时。我的问题是:如果从IDS集合中检索ID,我可以相信Getzoneornull将来永远不会返回null?
但是,如果ID可以从历史上消失,那么处理此问题的最佳策略是什么?
显然,如果您在Windows的时区和TZDB之间切换,则TighZone ID将不同。Olson时区ID是稳定的,不应改变。即使我这么说,过去存在变化,但是旧ID仍然存在,并且是新ID的别名。所有"区域/城市" ID都是新样式,并且选择了该计划,因此他们不必再改变。旧ID有时是根据时区的合法名称命名的,这些时区可能会更改。
我们将时区的Olson ID存储在我当前项目的表格中。
我不能代表Windows时区IDS。