为什么使用 php 转换时间戳 '2016-10-06T09:50:54.000Z'

Why convert Timestamp '2016-10-06T09:50:54.000Z' with php

此代码:

$timestamp = 2016-10-06T09:50:54.000Z;

如何将时间戳分离或转换为日期和时间?

示例:

TimeStamp       2016-10-06T09:50:54.000Z
Date            2016-10-06
Jam(GMT +7)     04:55:45

请帮忙解决这个问题。谢谢

看看这个简短的例子:

<?php
$datetime = new Datetime('2016-10-06T09:50:54.000Z');
var_dump($datetime->format('Y-m-d H:i:s'));

输出显然是:string(19) "2016-10-06 09:50:54"

使用不同的格式字符串,您可以将日期时间对象转换为您想要的任何表示形式。例如,'Y-m-d' 将给出国际格式的日期。

看看很棒的文档:http://php.net/manual/en/class.datetime.php

<?php
$timestamp = "2016-10-06T09:50:54.000Z";
$datetime = new Datetime('2016-10-06T09:50:54.000Z');
echo "Date".$datetime->format('Y-m-d')."<br>";
echo "Jam".$datetime->format('H:i:s');
?>
$d = new DateTime('2016-10-06T09:50:54.000Z');
echo $d->format('Y-m-d\TH:i:s.u'); // 2016-10-06T09:50:54.000000
echo $d->format('Y-m-d'); // 2016-10-06

// convert to GMT+7 timezone
$d->setTimezone(new DateTimeZone('GMT+7'));
echo $d->format('h:i:s'); //  04:50:54

没什么神秘的:

<?php
$timestamp = '2016-10-06T09:50:54.000Z';
$dt = new DateTime($timestamp);
var_dump($dt);
$dt->setTimezone(new DateTimeZone('Asia/Jakarta'));
var_dump($dt);
object(DateTime)#1 (3) {
  ["date"]=>
  string(26) "2016-10-06 09:50:54.000000"
  ["timezone_type"]=>
  int(2)
  ["timezone"]=>
  string(1) "Z"
}
object(DateTime)#1 (3) {
  ["date"]=>
  string(26) "2016-10-06 16:50:54.000000"
  ["timezone_type"]=>
  int(3)
  ["timezone"]=>
  string(12) "Asia/Jakarta"
}

与字符串不同,为正确的日期提供格式是 trivial

我不知道 Jam 是什么时区,但我建议你指定一个城市,这样你就可以考虑 DST(我在我的文件中使用了 Asia/Jakarta示例代码,完整列表可在 List of Supported Timezones 中找到)。仅依赖像 +7 这样的 UTC 偏移量可能会使您的代码在夏季变得不可靠。