首页
学习
活动
专区
圈层
工具
发布

parse解析
EN

Stack Overflow用户
提问于 2013-10-04 15:15:51
回答 2查看 331关注 0票数 0

我试图解析以下字符串:

代码语言:javascript
复制
 Thu Oct 03 2013 07:03:41 GMT+0200 (Central Europe Standard Time)

但我很难找到相应的格式,我试了一下:

代码语言:javascript
复制
  $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和方括号之间没有空格。下面的作品很好

代码语言:javascript
复制
$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');

但是(显然)我应该能够解析第一个例子。那么,您有什么建议,正确的格式应该是什么样子?

我所犯的错误:

代码语言:javascript
复制
Fatal error: Call to a member function format() on a non-object in C:\....

调用$date ->格式之前的var_dump of $date:

代码语言:javascript
复制
 boolean false
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-04 15:31:57

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

代码语言:javascript
复制
D M d Y H:i:s e+

我已经将eO替换为e,因为输入包含GMT+0200,它在"GMT“和偏移量之间没有分隔符。我还将(*)部件替换为+,这是唯一可以使用可变输入量的说明符(*匹配一个令牌,即一个单词--如果之后有更多的输入,解析就会失败)。

请注意,由于使用了+ (使用DateTime::getLastErrors查看它),仍然会有警告,但是转换将正确工作。

票数 1
EN

Stack Overflow用户

发布于 2013-10-04 15:25:41

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

代码语言:javascript
复制
$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

看到它起作用

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19184831

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档