我需要存储数据库中不同世界区域的夏令时(夏令时)转换规则.我已经有了一种存储区域和子区域的方法(所以整个"澳大利亚的一半"/亚利桑那/纳瓦霍问题得到了解决),但我想知道最有效的架构是什么来实现这一目标.我看到的两个选项:
有一个表格,其中包含每年和区域的唯一一行,给出夏令时的开始和结束时间以及特定的偏移量
有一个表格,存储每个地区的公式和有效日期范围(以色列等地区所需的有效范围)
第一个优点是灵活性,因为几乎任何东西都是可能的.不幸的是,它还需要(a)更多空间,并且相应地(b)需要大量工作来获得数据输入.第二个很好,因为一行可以对应一个区域几十年,但它也需要在应用层中使用某种语言解析器和解释器.由于这个数据库将被几种不同的应用程序使用,这些应用程序用没有强大文本处理功能的语言编写,我宁愿避免这种路
我很乐意只使用zoneinfo或类似的东西,但不幸的是,在这种情况下,这不是一个选项.同样,我无法规范日期,时区和夏令时信息必须在数据库中以满足某些用例.
有没有人有类似的经历?同样,有没有人有任何我可能错过的出色选择?
你几乎注定了第一个选择.您可以根据需要为具有时间变化"规则"的国家预先生成日期,但某些地区没有任何规则,并且每年都会通过独裁法令或立法投票制定变更(巴西直到今年).
这就是为什么所有操作系统供应商每年推出一次或两次时区文件更改的原因 - 他们必须这样做,因为他们无法以编程方式生成100%准确的文件.