如何处理夏令时时区偏移量


How to handle Timezone offset with daylight savings?

在我的网站中,用户 A 创建了一个从上午 9:00 开始的事件。我将该时间转换为 GMT,以便如果用户 B 提前两小时在不同时区看到该事件,则可以将其转换为用户 B 的时区,并显示该事件从上午 11:00 开始。

我的问题是,如果用户 A 在夏令时期间创建一个事件,然后在夏令时超过时区偏移量时查看它,则偏移量将相差一小时。这会导致事件从上午 8:00 开始(如果不是夏令时)和上午 9:00(如果它是夏令时)。关于如何使用javascript或php解决此问题的任何建议?

唯一的想法是,当我得到如下所示的时区偏移量时,我是否应该始终将日期设置为一月,以便无论实际月份如何,我始终获得相同的时区偏移量?还是有更好的方法来解决这个问题?

d = new Date();
d.setMonth(1);
d.getTimezoneOffset()

> getTimezoneOffset返回的时区偏移量是调用该方法的日期,而不是当前时间。 因此,只需始终询问您正在显示的事件的时区,您应该没问题。

但是,请注意,如果要计划定期事件,则需要将时间存储并处理为本地时间,而不是通用时间。 否则,每当夏令时开始或结束时,会议时间将跳一小时。