我面临着一些奇怪的问题与DateTime::createFromFormat()日期时间:: createFromFormat()尾随时区
我有一个输入日期
周五2014年5月9日11:00:00 GMT 0200
现在,当我将DateTime :: createFromFormat()应用于它时,它似乎不工作。
所以在这里我做了什么
$d = DateTime::createFromFormat('D M m Y H:i:s T 0200', 'Fri May 09 2014 11:00:00 GMT 0200');
echo $d->format("Y-m-d H:i:s");
上面的代码工作得很好。
现在的问题是我看到值0200正在改变通常来自一个饲料的不同输入值。并找不到处理这个问题的方法。
http://php.net/manual/en/datetime.createfromformat.php
在它支持+,*在结尾处添加,但是这给了错误
所以
$d = DateTime::createFromFormat('D M m Y H:i:s T *', 'Fri May 09 2014 11:00:00 GMT 0200');
Array
(
[warning_count] => 0
[warnings] => Array ()
[error_count] => 1
[errors] => Array (
[30] => Trailing data
)
)
围绕我做的工作是通过除去最后的手动4位数然后使用编号为
$d = DateTime::createFromFormat('D M m Y H:i:s T', 'Fri May 09 2014 11:00:00 GMT');
但问题重刑是,如果有一个正确的方法来处理这个问题,即不必替换最后4位数字,并使用输入,并使用DateTime类来处理它?
$d = new DateTime('Fri May 09 2014 11:00:00 GMT 0200');
也产生输出
DateTime Object
(
[date] => 0200-05-15 11:00:00
[timezone_type] => 2
[timezone] => GMT
)
我检查这些帖子
Convert date string to UTC time with PHP
php datetime createformat parse
,并没有帮助。
啊,我看到我的服务器是在PHP5.3上,也许当我用+ +它也没有产生任何转换日期。刚试过不同的机器,似乎工作,但是,警告仍然存在。感谢您的答案,我几乎要疯了,甚至不知道在PHP 5.3不起作用,并在5.3.9它与隐藏的警告。我会接受答案。你介意指定版本差异可能会导致这个问题到你的答案,以便别人不必像我这样的头撞:) –
是的,现在我再次读取3v4l输出它看起来像这是直到5.3.9的错误。我会更新这个答案 - 你应该真的升级你的服务器,5.3现在是EOL ;-) – DaveRandom
是的,我马上升级看起来像在Debian的分发包是最新的一个喘气,所以升级PHP。不确定旧版本的PHP如何在debian上做。无论如何,再次感谢。 –