Javascript 如何使用夏令时处理时区偏移?
在我的网站中,用户A创建了一个从上午9:00开始的事件。我将该时间转换为GMT,这样,如果用户B在两小时前的不同时区看到该事件,它可以转换为用户B的时区,并显示该事件在上午11:00开始 我的问题是,如果用户A在夏时制期间创建一个事件,然后在夏时制超过时区偏移量时查看该事件,则会关闭一小时。这会导致事件在上午8:00(非夏令时)和上午9:00(夏令时)开始。关于如何用javascript或php解决这个问题,有什么建议吗 我唯一的想法是,当我得到像下面这样的时区偏移量时,我是否应该总是将日期设置为1月份,这样无论实际月份如何,我都能得到相同的时区偏移量?还是有更好的方法来解决这个问题Javascript 如何使用夏令时处理时区偏移?,javascript,php,date,Javascript,Php,Date,在我的网站中,用户A创建了一个从上午9:00开始的事件。我将该时间转换为GMT,这样,如果用户B在两小时前的不同时区看到该事件,它可以转换为用户B的时区,并显示该事件在上午11:00开始 我的问题是,如果用户A在夏时制期间创建一个事件,然后在夏时制超过时区偏移量时查看该事件,则会关闭一小时。这会导致事件在上午8:00(非夏令时)和上午9:00(夏令时)开始。关于如何用javascript或php解决这个问题,有什么建议吗 我唯一的想法是,当我得到像下面这样的时区偏移量时,我是否应该总是将日期设置
d = new Date();
d.setMonth(1);
d.getTimezoneOffset()
getTimezoneOffset
返回的时区偏移量是方法调用的日期,而不是当前时间。所以,只要问一下你正在展示的活动的时区,你就可以了
但是,请注意,如果要安排重复事件,则需要将时间存储和处理为本地时间,而不是通用时间。否则,每当夏时制开始或结束时,会议时间都会增加一个小时。我不知道你在问什么?您应该始终在相关时间添加时区偏移。如果这样做,将不会出现任何1小时以外的错误。@MarkReed您是指在创建事件时存储事件的时区偏移量,并在将其转换为不同时区时使用该值?您试图解决的问题是什么?如果我创建了一个发生在5月美国东部夏令时上午9点的事件,该事件将存储为UTC 1300。如果我看一下现在是12月的5月活动,它仍然会显示为上午9点,因为5月的时区偏移是4小时,即使现在12月的时区偏移是5小时。现在,如果你试图安排重复的活动,那么5月的会议仍然会在每个星期或我们到12月时举行,那么是的,您必须存储本地时间和时间偏移,而不仅仅是存储UTC。@MarkReed是的,我正在尝试执行重复事件,您的解决方案修复了它,谢谢。使用
new Date().getTimezoneOffset()
时,我现在执行new Date(eventDate).getTimezoneOffset()
以便偏移量始终相同。谢谢