Marc Dupuis
Marc Dupuis

Reputation: 531

Inserting a date in mongodb

I want to insert a date into a collection. I use the class MongoDate to create the date object:

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

The problem is that once it is in my collection the date is 2 hours earlier.

For instance, $today here should be 2013-05-28 00:00:00 but once in the database it is 2013-05-27 22:00:00.

I can't resolve this problem by adding 2 hours manually to the timestamp because I use the date in queries.

The local time of the server where Mongo is running is set to the correct time of my country.

Upvotes: 16

Views: 27240

Answers (4)

Ego Slayer
Ego Slayer

Reputation: 2067

FYI: If you need date created for your object model.

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

Upvotes: 0

karrtojal
karrtojal

Reputation: 886

That works in the new php version of mongodb:

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

Upvotes: 21

Gennady  Kozlov
Gennady Kozlov

Reputation: 1011

Remove old document and insert

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

        $collection->insert($bill);

Upvotes: 2

Marc Dupuis
Marc Dupuis

Reputation: 531

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

This is working.

Upvotes: 15

Related Questions