Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.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之后会得到不同的日期值?_Php_Javascript_Date_Datetime_Time - Fatal编程技术网

为什么在我将日期时间从javascript传递到php之后会得到不同的日期值?

为什么在我将日期时间从javascript传递到php之后会得到不同的日期值?,php,javascript,date,datetime,time,Php,Javascript,Date,Datetime,Time,我有一个处理时间的php: [PHP]echo date('Y-m-d H:i:s', $_POST['time']); 然后我使用javascript将时间值发布到php: [javascript]var $new_time = Math.round((new Date("2009-09-09T23:15:00")).getTime()/1000); $.ajax({ url:"...", data:{time:

我有一个处理时间的php:

[PHP]echo date('Y-m-d H:i:s', $_POST['time']);
然后我使用javascript将时间值发布到php:

[javascript]var $new_time = Math.round((new Date("2009-09-09T23:15:00")).getTime()/1000);
            $.ajax({
              url:"...",
              data:{time:$new_time},
              type: "post",
              async: false,
              dataType: "html",
              success: function(data,textStatus,jqXHR) {
                     alert(data);   
              }
            });

在警报中显示:
2009-09-10 01:15:00
。嗯,有人能告诉我为什么吗?

Javascript将使用最终用户的本地计算机时钟,PHP将使用远程服务器的时间和时区设置。尝试创建一个示例页面,用PHP输出当前的时间和时区偏移量,并将其与您所在的计算机进行比较。

与大多数其他格式不同,在中指定日期字符串时,JavaScript假定它是UTC格式

var date = new Date("2009-09-09T23:15:00");

console.log(date.toUTCString()); // Wed, 09 Sep 2009 23:15:00 GMT
当PHP输出系统本地时区的日期时

如果您希望日期以UTC/GMT为单位,您可以使用:

echo gmdate('Y-m-dh:i:s',$_POST['time']);

JavaScript是客户端。它基于计算机的系统时钟。PHP是服务器端的。它基于服务器的系统时间和时区信息。日期的舍入是如何工作的?@Dagon OP可能试图舍入
日期。getTime()
,但操作不正确。@Gagon,我不太清楚这是为什么?但是如果我不绕过它,这个函数甚至不起作用。我认为这与javascript日期时间和unix日期时间格式之间的转换有关。@BLaZuRe,谢谢你的建议。事实上,通过在php文件中添加ini_set('date.timezone',),我已经将php服务器设置为正确的时区。那么,为什么这仍然是一个问题呢?我明白了,那么有没有任何方法或函数可以让php认为它是本地时区的时间?或者有什么方法可以将2009-09-09T23:15:00推回相应的UTC时间格式?我知道我可以编写一个函数将时间推回正确的格式。只是想知道是否可以调用javascript库或jquery中的任何简单函数来执行此操作。@新手,您可以尝试使用
gmdate()
。添加到文档和更新代码段的链接。使用
DateTime
类代替
gmdate()
开始。它有很好的时区支持。