How to convert a PHP DateTime object to ISO string?
我有一个日期,我收到MS格式的JSON日期。 它看起来像这样:
1 |
我可以通过这样做将它转换为PHP DateTime对象:
1 2 3 | $timestamp = round(((int) $originalMSdate) / 1000); $convertedDate = new DateTime(); $convertedDate->setTimestamp($timestamp); |
但最终,我需要它是ISO 8601格式的字符串。 我尝试将其转换为ISO日期对象& 然后将其转换为带有strval()的字符串但是strval()对日期对象不起作用。
我也试过了
1 |
但我需要它还包括时区信息,如下所示:2015-10-01T21:22:57.057Z
我在date_format中没有看到相应的字符。
我怎样才能做到这一点?
编辑:我应该澄清,我不打印结果字符串。 我需要将它传递给接受字符串数据类型的数据库中的字段。
请尝试以下代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <?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 ); |
这有效:
格式不完全相同。 它采用以下格式:
2016-04-25T14:27:00-05:00而不是
2016-04-25T14:27:00.057Z
但它足够接近我可以做一些操作来获得我需要的东西。