Подтвердить что ты не робот

Печать даты MongoDB с PHP

Как в 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

То же самое.

4b9b3361

Ответ 1

$my_date->sec - это отметка времени unix, используйте функцию date(), чтобы показать ее в требуемом формате.

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

Ответ 2

Просто быстрое обновление, чтобы сказать, что у MongoDate есть метод toDateTime с версии 1.6 расширения pecl. Теперь вы можете сделать

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

Ответ 3

вам не хватает микросекунды.

Чтобы показать (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 → 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")

Добрый день!

Марио Т.