为什么在我将日期时间从javascript传递到php之后会得到不同的日期值?
我有一个处理时间的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]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()
开始。它有很好的时区支持。