如何在PHP中生成此日期时间格式? PHP中的xsd时间格式

时间:2015-07-17 18:41:37

标签: php datetime xsd saml

我正在使用SAML执行SSO。我的XML是在PHP脚本中创建的,我需要格式化SAML中所谓的issueInstance的日期时间

我需要这种格式:

  

2015-05-04T01:12:04.582Z

我尝试date('c'),但它提供的格式如下:

  

2015-07-17T18:32:55 + 00:00

响应导致错误的时间格式错误:

IssueInstant is invalid (wrapped: Unparseable date: "2015-07-17T18:32:55+00:00")

我不确定.582Z在日期时间的尾端是什么,所以我无法弄清楚如何格式化它并且google没有任何帮助在PHP中寻找xsd时间格式。

1 个答案:

答案 0 :(得分:0)

.582 == 582 millisecondsZ == Zulu == +00:00。这是一个有效的ISO8601时间戳,所以我认为你只是处理一个写得不好的解析器,它实现了一种特定的格式。

PHP的ISO8601格式不包括毫秒:

var_dump(DateTime::ISO8601); // string(13) "Y-m-d\TH:i:sO"

并且没有ms的标志,但你可以伪造它:

var_dump(date("Y-m-d\TH:i:s.000O")); // string(28) "2015-07-17T11:56:00.000-0700"

如果你真的需要,你可以在几毫秒内完成:

var_dump(date(sprintf("Y-m-d\TH:i:s.%sO", substr(microtime(),2,3))));
// string(28) "2015-07-17T12:05:51.044-0700"