Вставка даты в mongodb

Я хочу вставить дату в коллекцию. Я использую класс MongoDate для создания объекта даты:

$today = new MongoDate(strtotime(date('Y-m-d 00:00:00')));

Проблема заключается в том, что когда она находится в моей коллекции, дата на 2 часа раньше.

Например, $today здесь должен быть 2013-05-28 00:00:00, но один раз в базе данных это 2013-05-27 22:00:00.

Я не могу решить эту проблему, добавив 2 часа вручную в метку времени, потому что я использую дату в запросах.

Локальное время сервера, на котором работает Mongo, настроено на правильное время в моей стране.

Ответ 1

Это работает в новой версии php mongodb:

new MongoDB\BSON\UTCDateTime((new DateTime($today))->getTimestamp()*1000)

Ответ 2

$dt = new DateTime(date('Y-m-d'), new DateTimeZone('UTC'));
$ts = $dt->getTimestamp();
$today = new MongoDate($ts);

Это работает.

Ответ 3

Удалить старый документ и вставить

        $bill = array(  
                "_id" => 1, 
                "name" => "A", 
                "lastModified" => new MongoDate()
            );

        $collection->insert($bill);

Ответ 4

К вашему сведению: если вам нужна дата, созданная для вашей объектной модели.

$date_created = new \MongoDB\BSON\UTCDateTime(time()*1000);