如何存储重复的日期,记住夏令时

如何存储重复的日期,记住夏令时

我把事件存储在我的数据库里。我有“开始”和“结束”日期时间,“票证_开始”和“票证_结束”(用于票务销售实际开始/结束时,而不是实际事件的开始/结束)。

到目前为止,我已经构建了一些方法来完成所有有趣的事情,比如在保存之前将日期/时间转换为GMT,然后返回到它们各自的时区显示。

我将时区存储在varchar字段中,其值类似于“America/New York”。

但是-现在我需要开始处理如果用户想要允许重复事件。我以前做过,也没什么大不了的,但从来没有跨越过多个时区。

起初,我认为这没什么大不了的,但后来意识到-如果最初的开始日期是7月(例如),并且每个月都会重复一年,那么在某一时刻,夏令节约时间就会使它变得不同,这样从格林尼治时间开始的转换就会有不同的时间变化。一个月,当转换12:00时,它会将它更改为-5,下一个月,它会因为DST而将它更改为-4。

我目前的想法是,我将存储一个‘DST’tinyint(1),以确定是否在DST期间输入了开始/结束日期,然后在必要时制定一个方法,将时间更改一个小时。

但是-我想我会在这里问,也许这是一个“正常”的问题,或者是一个我没有想到的简单的事情。

(cakephp 2.4.x)


红糖糍粑
浏览 445回答 3
3回答

qq_笑_17

是否有一个好的方法来处理检查,看看日期是否过了,或者其他类似的简单的‘检查’?以前,如果将所有日期存储在UTC中,这很简单,因为我可以检查服务器时间。但现在,它似乎需要额外的步骤.。

潇潇雨雨

如果存储下一个即时预测的UTC时间,则可以使用此时间来查询某个事件是否即将到来或是否已过。如果已传递,则可能希望在另一个表中为过去的事件编写新记录,然后将UTC时间更新为下一个重复的实例。
打开App,查看更多内容
随时随地看视频慕课网APP