如何在 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 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"
我正在使用 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 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"