16

如何PHP获取常规时间戳格式的MongoDB日期?

假设我有:

$my_date;
print_r($my_date);

print_r输出是:

MongoDate Object ( [sec] => 1346300336 [usec] => 593000 )

但是做:

echo $my_date;

输出:

0.59300000 1346300336

甚至尝试过:

echo (string)$my_date

一样。

4

5 回答 5

32

$my_date->sec是 unix 时间戳,使用date()函数以所需的格式显示它。

echo date('Y-m-d H:i:s', $my_date->sec);
于 2012-08-30T04:58:25.887 回答
5

只是一个快速更新,说 MongoDate 从 pecl 扩展的 1.6 版本开始就有一个 toDateTime 方法。你现在可以做

$mongoDate->toDateTime()->format(...)
于 2015-03-09T10:54:59.830 回答
2

你错过了微秒。

显示 (mongo -> php)

$fecha = date(preg_replace('`(?<!\\\\)u`', $my_date->usec, 'Y-M-d H:i:s.u'), $my_date->sec);
//MongoDate ISODate("2013-05-28T15:27:24.735Z")
//Php Date 2013-May-28 10:27:24.735000

发送到 mongo (php -> mongo)

$fecha_mongo = new MongoDate(strtotime($fecha));
//Fail function, the short way but, 70000 isn't equal to 700000.
//$fecha_mongo->usec = (int)$fecha_micro->format("u");
preg_match("/\.(.*)/", $fecha, $uSec);
$fecha_mongo->usec = (int)(count($uSec)==2?$uSec[1]:0);

//Php Date 2013-May-28 10:27:24.735000
//MongoDate ISODate("2013-05-28T15:27:24.735Z")

再会!

马里奥·T。

于 2013-05-28T15:58:30.490 回答
0

首先,使用给定的函数从毫秒创建日期:

public function showdatefn($mili)
{   
    $seconds = (string)$mili / 1000;
    return date("d-m-Y", $seconds); 
}   
$date =$this->showdatefn(<put mongo date here>);

这将为您提供正确的日期。

于 2018-11-01T07:11:59.443 回答
0

使用MongoDB\BSON\UTCDateTime 推荐使用MongoDate

$mongoDate = new \MongoDB\BSON\UTCDateTime(strtotime('2020-10-01 18:30:00'));
于 2020-12-18T14:51:59.127 回答