Vraag Een datum invoegen in mongodb


Ik wil een datum in een verzameling invoegen. Ik gebruik de klas MongoDate om het datumobject te maken:

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

Het probleem is dat zodra deze in mijn verzameling is, de datum 2 uur eerder is.

Bijvoorbeeld, $today hier zou het moeten zijn 2013-05-28 00:00:00 maar eenmaal in de database is dat zo 2013-05-27 22:00:00.

Ik kan dit probleem niet oplossen door handmatig 2 uur aan de tijdstempel toe te voegen omdat ik de datum in query's gebruik.

De lokale tijd van de server waarop Mongo actief is, is ingesteld op de juiste tijd in mijn land.


10
2018-05-28 12:47


oorsprong


antwoorden:


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

Dit werkt.


12
2018-05-28 14:22



Dat werkt in de nieuwe php-versie van mongodb:

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

11
2017-08-14 07:36



Oud document verwijderen en invoegen

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

        $collection->insert($bill);

2
2017-11-24 11:41