Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用夏令时处理时区偏移?_Javascript_Php_Date - Fatal编程技术网

Javascript 如何使用夏令时处理时区偏移?

Javascript 如何使用夏令时处理时区偏移?,javascript,php,date,Javascript,Php,Date,在我的网站中,用户A创建了一个从上午9:00开始的事件。我将该时间转换为GMT,这样,如果用户B在两小时前的不同时区看到该事件,它可以转换为用户B的时区,并显示该事件在上午11:00开始 我的问题是,如果用户A在夏时制期间创建一个事件,然后在夏时制超过时区偏移量时查看该事件,则会关闭一小时。这会导致事件在上午8:00(非夏令时)和上午9:00(夏令时)开始。关于如何用javascript或php解决这个问题,有什么建议吗 我唯一的想法是,当我得到像下面这样的时区偏移量时,我是否应该总是将日期设置

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

我的问题是,如果用户A在夏时制期间创建一个事件,然后在夏时制超过时区偏移量时查看该事件,则会关闭一小时。这会导致事件在上午8:00(非夏令时)和上午9:00(夏令时)开始。关于如何用javascript或php解决这个问题,有什么建议吗

我唯一的想法是,当我得到像下面这样的时区偏移量时,我是否应该总是将日期设置为1月份,这样无论实际月份如何,我都能得到相同的时区偏移量?还是有更好的方法来解决这个问题

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()
以便偏移量始终相同。谢谢