我正在使用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时间格式。
答案 0 :(得分:0)
.582 == 582 milliseconds
和Z == 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"