Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.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日期时间createformat解析_Php_Date - Fatal编程技术网

php日期时间createformat解析

php日期时间createformat解析,php,date,Php,Date,我正在尝试分析以下字符串: Thu Oct 03 2013 07:03:41 GMT+0200 (Central Europe Standard Time) 但我正在努力找到相应的格式,我尝试了: $date= DateTime::createFromFormat('D M d Y H:i:s eO (*)','Thu Oct 03 2013 07:03:41 GMT+0200 (Central Europe Standard Time)'); echo $date->form

我正在尝试分析以下字符串:

 Thu Oct 03 2013 07:03:41 GMT+0200 (Central Europe Standard Time)
但我正在努力找到相应的格式,我尝试了:

  $date= DateTime::createFromFormat('D M d Y H:i:s eO (*)','Thu Oct 03 2013 07:03:41 GMT+0200 (Central Europe Standard Time)');
  echo $date->format('Y-m-d');
这会导致错误。问题是,GMT+0200和括号之间没有空格。下面的作品很好

$date= DateTime::createFromFormat('D M d Y H:i:s e O','Thu Oct 03 2013 07:03:41 GMT +0200');
echo $date->format('Y-m-d');
但是(显然)我也应该能够解析第一个示例。那么你有什么建议,正确的格式应该是什么样的呢

我得到的错误是:

Fatal error: Call to a member function format() on a non-object in C:\....
调用$date->format之前$date的var_转储:

 boolean false

您可以拆分传入的字符串。以下是给这只猫剥皮的一种方法:-

$dateString = 'Thu Oct 03 2013 07:03:41 GMT+0200(Central Europe Standard Time)';
\DateTime::createFromFormat('D M d Y H:i:s O', explode('(', $dateString)[0]);
请参阅以获取更多帮助


.

问题在于格式字符串,应该是

D M d Y H:i:s e+
我将
eO
替换为
e
,因为输入包含
GMT+0200
,它在“GMT”和偏移量之间没有分隔符。我还将
(*)
部分替换为
+
,这是唯一可以使用可变输入量的说明符(
*
匹配一个标记,即一个单词——如果在解析失败后有更多输入)


请注意,由于使用了
+
(使用
日期时间::getLastErrors
查看它),仍然会出现警告,但转换将正常工作。

它给出了什么错误您看到的错误是什么?另外,您是否在-->e O',[此处?]周四(十月)遗漏了撇号?是的,对不起,ctrl+c ctrl+v打字错误。我还用error编辑了这个问题,在调用format()之前,var_dump($date)输出了什么?false(也添加到问题中)您可以链接到文档以使用“+”吗。我可能遗漏了什么,但在atm机上找不到任何东西。@vascowhite:,在桌子的底部。@Jon谢谢,遗漏了。是的,我也在想同样的事情,但试图避免那个解决方案:-)@user1762087我很感激。然而,这种方法确实避免了Jon的方法产生的警告。但是,如果您没有检查DateTime::getLastErrors()中的警告,那么这对您来说不是问题。