我在 javascript 中有一个日期对象,如下所示:
var date = 2014-12-01T00:00:00.000Z
如果我这样做:
var date = new Date(date);
date.setUTCMonth(date.getUTCMonth()+1);
然后 toISOString()
方法显示期望值:
2015-01-01T00:00:00.000Z
但是当我通过 POST 将该日期时间字符串发送到 PHP 脚本并使用 DateTime
类将其解析回日期时,我得到了这个:
2014-12-31 19:00:00 -0500
我已经尝试使用 DateTimeZone
类设置时区并将时区设置为我自己的时区和 UTC,但不幸的是:
new DateTime($_POST['DateTime'],new DateTimeZone('America/Mexico_City'));
new DateTime($_POST['DateTime'],new DateTimeZone('UTC'));
有没有办法使用 Date
类在 javascript 中设置时区?还有另一种方法可以解决这个问题吗?我在处理时区方面的经验即使不是零,也很少。
更新:
根据 toISOString()
方法 (javascript),这是我的 ISO 格式的时间字符串:
2014-09-01T00:00:00.000Z
这里是我的 $_POST
变量的内容,根据 print_r()
:
Array (
[DateTime] => 2014-09-01T00:00:00.000Z
)
这是我的格式化程序函数的输出,使用 '%c'
格式(es_MX 语言环境):
dom 31 ago 2014 19:00:00 CDT
以及提到的格式化函数:
function formatDate($date) {
return utf8_encode(strftime('%c', $date->getTimestamp()));
}
最佳答案
我认为当您发送日期字符串时,它的格式会有所不同。至少当我测试它时,它按预期工作:
$a = new DateTime('2015-01-01T00:00:00.000Z'); echo $a->format('Y-m-d H:i:s'); // Outputs '2015-01-01 00:00:00'
关于javascript - 正确格式化客户端 (javascript) 和服务器 (PHP) 之间的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25669390/