如何在数据库中存储TimeZoneInfo对象?

Ant*_*lev 14 .net database timezone

我知道,有些误导性的标题.从来没有真正想要存储TimeZoneInfo对象本身:相反,我想存储一些文化中立的标识符,然后可以在以后用于重建一个实例TimeZoneInfo.

目前,我正在存储TimeZoneInfo.Id属性的价值,在英语和俄语版本的Windows上似乎都可以,但我只是想确保我做正确的事情.

Jon*_*eet 16

是的,Id是一个非本地化的标识符,因此这是一个适当的存储.

您应该知道一个可能的问题:标识符可能会随时间而变化.我不知道它是否是Windows时区标识符中的问题,但它确实发生在Olson(zoneinfo)数据库中.例如,我最近在考虑由"太平洋/ Ponape"改为"太平洋/波纳佩"引起的问题.

我怀疑,由于微软对ID有更严格的控制,它们更可能保持不变 - 但即便如此,各国也可以更改其名称,分成不同的国家(可能会创建新的时区)等.

我并不是建议对此问题进行任何修复 - 只是将其强调为潜在问题.存储ID可能是最好的方法,但要注意潜在的风险......


Ode*_*ded 10

我没有看到存储ID的问题,因为它们在Windows平台上看起来是一个常量值 - 也就是说TimeZoneInfo,无论您使用哪个版本的Windows ,特定ID都将始终映射到同一个对象.

我不确定单声道是做什么的,但如果这是相同的话我也不会感到惊讶.您始终可以检查类源代码.