我正在用PHP编写日历/计划应用程序。现在,我需要您希望事件发生的时间和时间。我还要求提供时区,并进行相应调整以获取格林尼治标准时间的事件时间。
然后,我将该时间存储为与演出当天午夜的偏移量。很好,效果很好,但是当我达到夏令时时会发生什么呢?我不确定发生这种情况时该怎么办。另一个问题是,并非所有国家都有DST,所以我有点束手无策。
我将这些事件显示在日历上,因此时间安排很重要。
最佳答案
处理DST是一个真正的痛苦。
对于将来的事件,您应该存储事件发生的位置和本地时间,而不是GMT时间。这是因为有时DST启动和停止时政府会发生变化(在美国去年才发生),然后格林尼治标准时间(GMT)发生了变化,但本地时间却没有变化。
然后,如果您需要在事件发生时进行通知,则每天收集接下来的24-48小时内的事件,然后将其时间转换为GMT。为此,您需要一个像this one这样的位置-时区数据库。获取事件发生时每个位置的GMT偏移量,并使用该时间将时间转换为GMT,然后您确切地知道事件发生的时间。
关于php - 计划和DST,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/563053/