2012-08-30 15 views
12

Come in PHP viene visualizzato il formato di timestamp regolare da una data MongoDB?Stampa di una data MongoDB da PHP

Si supponga che ho:

$my_date; 
print_r($my_date); 

Il print_r uscita è:

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

Ma fare:

echo $my_date; 

Uscite:

0.59300000 1346300336 

anche provato:

echo (string)$my_date 

stessa cosa.

risposta

28

$my_date->sec è il timestamp unix, utilizzare la funzione date() per visualizzarlo nel formato richiesto.

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

Non sai chi sia la decisione su 10Gen, ma è confuso. Non dovrebbe dover chiamare la proprietà 'sec'. Oh bene. – Justin

+2

quella persona ha effettivamente una maniglia qui su StackOverflow: http://stackoverflow.com/users/4243/kristina –

2

manca il microsecondo.

Per mostrare (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 

da inviare al 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") 

Buon giorno!

Mario T.

3

Solo un rapido aggiornamento, per dire che MongoDate ha un metodo toDateTime dal momento che la versione 1.6 dell'estensione PECL. Ora puoi fare

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