PHP解析ISO格式的日期

ewo*_*com 5 php datetime

我目前正在使用ConstantContact,它返回带有更新字段的XML,格式如下:

2013-02-13T08:35:34.195Z
Run Code Online (Sandbox Code Playgroud)

我假设这是日期('c')格式.如何解析这种格式?strtotime没有返回正确的值.

Mar*_*ant 17

您可能需要查看DateTime :: createFromFormat()函数.

$datetime = DateTime::createFromFormat('Y-m-d\TH:i:s+', '2013-02-13T08:35:34.195Z');
Run Code Online (Sandbox Code Playgroud)

问题在于你将失去毫秒.

+格式字符串中的符号只是告诉此函数忽略字符串的其余部分而不是创建错误.

在PHP7.2中确认.如下面的注释,您可以使用Y-m-d\TH:i:s.u\Z匹配toISOString给出的确切Js字符串.

  • 在`createFromFormat()`中使用''DateTime :: ISO8601'或''c'`而不是''Ymd\TH:i:s +'`也可以... (13认同)
  • 我必须添加时区才能使它工作:`DateTime :: createFromFormat('Ymd\TH:i:s +',$ isotime,new DateTimeZone('Etc/Zulu'));` (4认同)
  • 我之前的评论的附录。而是使用“Ymd\TH:i:su\Z”,它是双向的。 (2认同)