Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.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 PHP,服务器发送事件-日期\默认\时区\获取()在远程文件中无法正常工作_Javascript_Php_Datetime - Fatal编程技术网

Javascript PHP,服务器发送事件-日期\默认\时区\获取()在远程文件中无法正常工作

Javascript PHP,服务器发送事件-日期\默认\时区\获取()在远程文件中无法正常工作,javascript,php,datetime,Javascript,Php,Datetime,我正在使用服务器发送的事件,并尝试根据查看器的本地时间显示时间 我的数据库中的所有时间都以GMT格式存储在DATETIME字段中: 代码块1 然后是相反的情况(可能比需要的更复杂): 代码块2 当窗口在浏览器中处于活动状态时,这一切都正常工作,但当date\u default\u timezone\u get()位于远程调用的文件中时,这一切都会崩溃: JavaScript 代码块3 其中,date\u default\u timezone\u get()位于sse\u bot.php文件中 我

我正在使用服务器发送的事件,并尝试根据查看器的本地时间显示时间

我的数据库中的所有时间都以GMT格式存储在
DATETIME
字段中:

代码块1

然后是相反的情况(可能比需要的更复杂):

代码块2

当窗口在浏览器中处于活动状态时,这一切都正常工作,但当
date\u default\u timezone\u get()
位于远程调用的文件中时,这一切都会崩溃:

JavaScript

代码块3

其中,
date\u default\u timezone\u get()
位于
sse\u bot.php
文件中

我尝试从浏览器窗口设置会话变量:

代码块4

然后在
sse_bot.php
文件中使用它:

代码块5

但是没有骰子

有什么想法吗

编辑1

我回显了它,并且
$utimezone=$\u SESSION['tzone']将其设置为适当的值(在我的例子中为“美国/丹佛”)。但问题似乎特别在于:

代码块6

当我通过浏览器使用代码块2时,它可以完美地工作。我甚至可以将该行更改为:

代码块7

一切都很好


sse_bot.php
文件进行相同的更改无效。经过一番轻描淡写之后,返回的时间与进入它的时间是一样的。

我想你错过了这里的要点。所有PHP都在服务器上运行,因此总是反映服务器的时区版本——这是所有情况下的预期行为。如果你想找到客户端的时区,那么你需要用Javascript进行查询,并将报告的值发送回服务器。

我认为你错过了这里的要点。所有PHP都在服务器上运行,因此总是反映服务器的时区版本——这是所有情况下的预期行为。如果要查找客户端的时区,则需要使用Javascript进行查询,并将报告的值发送回服务器。

问题是时区已经是“America/Denver”,因为我没有设置其他时区。在浏览器版本中,它是在别处设置的,但在
sse_bot.php
中,它不是

只需补充:

date_default_timezone_set('GMT');
在代码块6之前的某个地方,鲍勃是你的阿姨


(可能不值得回答,更适合评论,但未来的绊脚石会更容易找到这个。)

问题是时区已经是“美国/丹佛”,因为我没有设置其他时区。在浏览器版本中,它是在别处设置的,但在
sse_bot.php
中,它不是

只需补充:

date_default_timezone_set('GMT');
在代码块6之前的某个地方,鲍勃是你的阿姨


(可能不值得回答,更适合评论,但未来的绊脚石会更容易找到这一条。)

FWIW:对于将来的参考,始终存储为UTC并从那里转换:)FWIW:对于将来的参考,始终存储为UTC并从那里转换:)请查看我的答案。PHP很乐意进行时间转换,只要设置了适当的标识符。在我的例子中,我忽略了将当前时区设置为GMT请查看我的答案。PHP很乐意进行时间转换,只要设置了适当的标识符。就我而言,我忽略了将当前时区设置为GMT
var src = new EventSource('sse_bot.php?uid=' + userID);
$utimezone = date_default_timezone_get();
$_SESSION['tzone'] = $utimezone;
$utimezone = $_SESSION['tzone'];
$date->setTimezone(new DateTimeZone($utimezone));
$date->setTimezone(new DateTimeZone('America/Denver'));
date_default_timezone_set('GMT');