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
同样的事情。
答案 0 :(得分:32)
$my_date->sec
是unix时间戳,使用date()
函数以所需格式显示它。
echo date('Y-m-d H:i:s', $my_date->sec);
答案 1 :(得分:4)
只是一个快速更新,说自从pecl扩展版本1.6以来MongoDate有一个toDateTime方法。 你现在可以做
$mongoDate->toDateTime()->format(...)
答案 2 :(得分: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 - &gt; 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")
美好的一天!
Mario T。
答案 3 :(得分:0)
首先,使用给定的函数从毫秒创建日期:
public function showdatefn($mili)
{
$seconds = (string)$mili / 1000;
return date("d-m-Y", $seconds);
}
$date =$this->showdatefn(<put mongo date here>);
这将给您正确的日期。
答案 4 :(得分:0)
不建议使用MongoDB\BSON\UTCDateTime MongoDate
$mongoDate = new \MongoDB\BSON\UTCDateTime(strtotime('2020-10-01 18:30:00'));