将Javascript日期字符串转换为PHP日期

时间:2015-07-13 04:13:24

标签: php date datetime laravel

我试图将Javascript格式的字符串转换为我可以在PHP中用于过滤的格式。

我给出的日期字符串示例是  " 2015年1月1日星期四00:00:00 GMT-0800(太平洋标准时间)"

我们说我已将其分配给变量$ z。当我运行以下内容时,我得到了意想不到的结果:

$z = "Thu Jan 01 2015 00:00:00 GMT-0800 (Pacific Standard Time)";
$value = date('Y-m-d H:i:s', strtotime($z));

这给了我$ value =" 1970-01-01 00:00:00",显然不是我想要的。我还试过以下但没有运气:

$value = DateTime::createFromFormat('D M d Y H:i:s',$z); //Fails

现在我非常确定时区信息是什么搞乱了一切,但我似乎无法弄清楚这里要做什么。我使用Laravel 5,所以我也尝试过与Carbon类似的操作。有没有人有什么建议?

1 个答案:

答案 0 :(得分:3)

您的代码提供错误Trailing data(使用DateTime::getLastErrors())。这是因为您的模式在时间(GMT-0800 (Pacific Standard Time))之后没有考虑时区。

因此,您需要使用T运算符来匹配GMT-0800部分,并使用通用+符号来完成剩下的部分。你的最终模式将是:

$value = DateTime::createFromFormat('D M d Y H:i:s T +',$z);

给出了

 DateTime Object
(
    [date] => 2015-01-01 00:00:00.000000
    [timezone_type] => 1
    [timezone] => -08:00
)
祝你好运!