如何在 PHP 中生成这种日期时间格式? xsd 时间格式 PHP

How do I produce this datetime format in PHP? xsd time formatting in PHP

我正在使用 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 对寻找 xsd 时间没有任何帮助PHP.

格式

.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"