[英]Change format of Date field of MongoDB in php
我的收藏结构如下:
{a,b,time}
我正在通过Java服务在集合中插入数据,其中a和b是整数,而time是Date字段。 从php中选择字段后,我得到的响应如下:
Array
(
[0] => Array
(
[b] => 19511297
[time] => Array
(
[$date] => Array
(
[$numberLong] => 1516688016000
)
)
)
)
如何通过php函数date('Ymd H:i:s)获得格式的时间?
看起来$numberLong
包含unix-timestamp,因此您可以尝试如下操作:
$data[0]['time']['$date']['date'] = date(
'Y-m-d H:i:s',
$data[0]['time']['$date']['$numberLong'] / 1000
);
似乎您的纪元时间戳是以毫秒为单位的,因此您需要执行以下操作:
$array[0]['time']['$date']['$numberLong'] = 1516688016000;
$timestamp = $array[0]['time']['$date']['$numberLong'] / 1000;
echo date("Y-m-d H:i:s", $timestamp);
您必须首先使用正确的MongoDB库 。 当您从数据库中提取数据时,PHP中的datetime字段将表示为UTCDateTime 。 当您将其转换为数组时,它就像['$date']['$numberLong']
。 但是您不必这样做。
当您从集合中获取文档列表时,可以使用toDateTime()
方法与以后的format()
结合使用,以任何方便的格式遍历光标并提取日期和时间。
看下面的例子:
$cursor = $collection->find([]);
foreach ($cursor as $doc) {
echo "\n" . $doc['time']->toDateTime()->format("Y-m-d H:i:s");
}
优点之一是您不会失去准确性。 另一个优点是您可以高效地处理时区。 例如,如果要在IST时区中显示日期和时间,可以这样做:
$timezone = new DateTimeZone('Asia/Kolkata');
foreach ($cursor as $doc) {
echo "\n" . $doc['time']->toDateTime()->setTimeZone($timezone)->format("Y-m-d H:i:s");
}
我建议您看一下Robo 3T (以前称为Robomongo),它将帮助您使用MongoDB。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.