Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php DateTime::createFromFormat()带有尾随时区_Php_Date_Datetime - Fatal编程技术网

Php DateTime::createFromFormat()带有尾随时区

Php DateTime::createFromFormat()带有尾随时区,php,date,datetime,Php,Date,Datetime,我正面临一些奇怪的问题 我有一个输入日期 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"); 上述代码运行良好 现在的问题

我正面临一些奇怪的问题

我有一个输入日期

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因不同的输入值而变化,这些输入值通常来自提要。也找不到解决办法

在手册中,它支持在末尾添加+,*但这会导致错误

所以

我正在做的工作是删除最后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 
) 
我检查了这些帖子

并且没有帮助。

如果您不使用
*
,它将按需要工作。Thsi仅适用于大于等于5.3.9的PHP版本。它仍然会生成一个警告(天知道为什么,因为您显式地允许跟踪数据),但它不会导致解析例程彻底失败,至少它只是一个内部警告,而不是实际的PHP警告

导致
*
失败的原因是它允许(强调我的):

随机字节,直到下一个分隔符或数字


由于您的尾随数据都是数字,
*
解析立即返回,而不使用任何字符,将字符串指针保留在末尾仍有尾随字节的位置。

啊,我看到我的服务器在PHP5.3上运行,也许当我尝试+时,它也没有为转换的日期生成任何内容。刚在另一台机器上试过,似乎有效,但警告仍然存在。感谢你的回答,我几乎发疯了,甚至没有意识到在PHP5.3上是不工作的,在5.3.9上是隐藏警告。我会接受答案。您是否介意指定版本差异可能会导致您的答案出现此问题,以便其他人不必像我一样敲打头部:)是的,现在我再次阅读3v4l输出,直到5.3.9,这看起来都是错误。我会更新这个答案-你真的应该升级你的服务器,5.3现在是EOL;-)是的,我现在正在升级,看起来debian中的发行包是最新的一个,所以升级PHP。不知道老版本的PHP在debian上到底做得怎么样。无论如何,再次非常感谢。
DateTime Object 
( 
  [date] => 0200-05-15 11:00:00 
  [timezone_type] => 2 
  [timezone] => GMT 
)