我有这样的日期时间字符串:
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?那么什么性格?如何处理DST?
答案 0 :(得分:4)
该日期字符串并不常见,并且其中包含一些不必要的信息(最后)。要解析它,我只是告诉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');
答案 1 :(得分:1)
我在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
T - Timezone缩写示例:EST,MDT ......