PHP解析日期ISO格式

问题描述:

我目前使用ConstantContact与更新字段返回XML格式是这样的:PHP解析日期ISO格式

2013-02-13T08:35:34.195Z 

我假设这是日期(“C”)格式。如何解析这种格式? strtotime未返回正确的值。

+0

'date('c',strtotime($ date));'?否则,你有什么尝试。 – AmazingDreams 2013-02-13 08:38:44

+0

@AmazingDreams我真的不知道该怎么尝试......我想从字符串表示中获得unix时间戳。 – ewooycom 2013-02-13 08:39:56

您可能想看看DateTime::createFromFormat()函数。

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

问题在于你将会失去毫秒。

登录格式字符串的+只是告诉该函数忽略字符串的其余部分而不是创建错误。

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

+0

我真的不在乎毫秒,这似乎是工作。谢谢 – ewooycom 2013-02-13 08:49:44

+11

在'createFromFormat()'中使用''DateTime :: ISO8601'或''c''而不是''Ymd \ TH:i:s +''也可以工作... – grim 2015-01-05 19:36:10

+3

我不得不添加时区它的工作原理: 'DateTime :: createFromFormat('Ymd \ TH:i:s +',$ isotime,new DateTimeZone('Etc/Zulu'));' – 2015-07-09 16:14:03