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.
$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);
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(...)
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.
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.