如何将 PHP DateTime 对象转换为 ISO 字符串?

2023-12-30

我收到了一个 MS 格式的 JSON 日期日期。它看起来像这样:

/Date(1365004652303)/

我可以通过执行以下操作将其转换为 PHP DateTime 对象:

$timestamp = round(((int) $originalMSdate) / 1000);
$convertedDate = new DateTime();
$convertedDate->setTimestamp($timestamp);

但最终,我需要它是 ISO 8601 格式的字符串。我尝试将其转换为 ISO 日期对象,然后使用 strval() 将其转换为字符串,但 strval() 不适用于日期对象。

我也尝试过

$dateString = date_format($convertedDate, 'YY-MM-DD H:i:s'); 

但我需要它还包括时区信息,如下所示:2015-10-01T21:22:57.057Z 我在 date_format 中没有看到相应的字符。

我怎样才能实现这个目标?

编辑:我应该澄清我没有打印结果字符串。我需要将其传递到数据库中接受字符串数据类型的字段。


请尝试以下代码

<?php
// input
$time = microtime(true);
// Determining the microsecond fraction
$microSeconds = sprintf("%06d", ($time - floor($time)) * 1000000);
// Creating DT object
$tz = new DateTimeZone("Etc/UTC");
$dt = new DateTime(date('Y-m-d H:i:s.'. $microSeconds, $time), $tz);
$iso8601Date = sprintf(
    "%s%03d%s",
    $dt->format("Y-m-d\TH:i:s."),
    floor($dt->format("u")/1000),
    $dt->format("O")
);
// Formatting according to ISO 8601-extended
var_dump(
     $iso8601Date
);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将 PHP DateTime 对象转换为 ISO 字符串? 的相关文章

随机推荐