2013-02-13 114 views
2

我目前使用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

回答

15

您可能想看看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