我试图解析以下字符串:
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 ->格式之前的var_dump of $date:
boolean false发布于 2013-10-04 15:31:57
问题是格式字符串,应该是
D M d Y H:i:s e+我已经将eO替换为e,因为输入包含GMT+0200,它在"GMT“和偏移量之间没有分隔符。我还将(*)部件替换为+,这是唯一可以使用可变输入量的说明符(*匹配一个令牌,即一个单词--如果之后有更多的输入,解析就会失败)。
请注意,由于使用了+ (使用DateTime::getLastErrors查看它),仍然会有警告,但是转换将正确工作。
发布于 2013-10-04 15:25:41
你可以分割传入的字符串。以下是剥这只猫皮的一种方法:-
$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]);有关更多帮助,请参见http://php.net/date。
看到它起作用。
https://stackoverflow.com/questions/19184831
复制相似问题