2012-08-30 36 views
12

如何在PHP我拿到常规时间戳格式了MongoDB过时?打印MongoDB的日期从PHP

假设我有:

$my_date; 
print_r($my_date); 

print_r输出是:

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

但是这样做:

echo $my_date; 

输出:

0.59300000 1346300336 

偶试过:

echo (string)$my_date 

同样的事情。

回答

28

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

echo date('Y-m-d H:i:s', $my_date->sec); 
+2

不知道谁在10Gen的决定是,但它是混乱。不应该调用'sec'属性。哦,好吧。 – Justin

+2

这个人在StackOverflow上实际上有一个句柄:http://stackoverflow.com/users/4243/kristina –

2

您错过了微秒。

要显示(蒙戈 - > 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 

发送给蒙戈(PHP - >蒙戈)

$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.

3

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

$mongoDate->toDateTime()->format(...)