web-dev-qa-db-fra.com

Imprimer une date MongoDB à partir de PHP

Comment obtenir dans PHP le format d'horodatage normal à partir d'une date MongoDB?

Supposons que j'ai:

$my_date;
print_r($my_date);

La sortie print_r est:

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

Mais faire:

echo $my_date;

Les sorties:

0.59300000 1346300336

Même essayé:

echo (string)$my_date

Même chose.

15
Justin

$my_date->sec est l'horodatage unix, utilisez la fonction date() pour l'afficher au format requis.

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

Juste une mise à jour rapide, pour dire que MongoDate a une méthode toDateTime depuis la version 1.6 de l’extension pecl. Vous pouvez maintenant faire

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

vous manquez la microseconde.

Montrer (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

Pour envoyer à 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")

Bonne journée!

Mario T.

2
mariofertc

Commencez par créer une date à partir de la milliseconde en utilisant la fonction donnée:

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

Cela vous donnera la date correcte.

0
manoj tiwari