如何从这个字符串创建php日期时间对象



我有这样的日期时间字符串:

2015-02-13 22:00 GMT+1-DST

2015-03-20 21:00 GMT-5+DST-

我开始尝试:

<?php
    $date = DateTime::createFromFormat('Y-m-d H:i ', '2015-03-20 21:00 GMT-5 +DST');
    echo $date->format('d-m-Y H:i');
?>

然而,我被时区和夏令时卡住了。我在上看到http://php.net/manual/en/datetime.createfromformat.php我可以用e, O, P and T表示时区,但我不明白哪个字符代表什么。我可以直接这样用吗?我必须将-5转换为例如-0500吗?那是什么角色?夏令时该怎么办?

该日期字符串并不常见,并且其中包含一些不必要的信息(在末尾)。为了解析它,我只告诉DateTime::createFromFormat()使用+字符忽略GMT+DST部分。O字符足够聪明,可以处理-5并将其转换为-0500。如果我们不忽略它们,则新DateTime对象中的时区是不正确的。

<?php
    $date = DateTime::createFromFormat('Y-m-d H:i +O +', '2015-03-20 21:00 GMT-5 +DST');
    echo $date->format('d-m-Y H:i');

演示

我在http://php.net/manual/en/function.date.php.是的,我相信你可以直接使用它。

e-时区标识符(添加在PHP 5.1.0中)示例:UTC、GMT、,大西洋/亚速尔群岛

O-与格林尼治时间(GMT)的时差(以小时为单位)示例:+0200

p-与格林尼治时间(GMT)的差值,冒号介于小时和之间分钟(添加在PHP 5.1.3中)示例:+02:00

时区缩写例如:EST、MDT。。。

相关内容

  • 没有找到相关文章

最新更新