phpmongodbdatetimeisodate

How to return ISO date format in PHP for MongoDB?


I want to store the current date generated from PHP into MongoDB collection as an ISO date formate.

ISODate("2012-11-02T08:40:12.569Z")

However I am not able to generate such Kind of date in php which will be stored in MongoDB as an ISODate format.

This is what I ve done.

 $d = new MongoDate(time());
 echo $d;

and it is outputting something like,

0.00000000 1353305590

which is not the format I need. How to do this?


Solution

  • You could run the __toString function, or use the sec field

    __toString will return a timestamp in usecs, which you can pass to date() after separating the seconds from milliseconds - read here: https://www.php.net/manual/en/mongodate.tostring.php

    OR, I personally prefer to have mongodb return just the seconds, which can be plugged directly into date() - read here: http://php.net/manual/en/class.mongodate.php

    Also, if you're generating a MongoDate() for right now, you don't need to specify time();

    In order to return an isodate, you need to do this:

    echo date(DATE_ISO8601, (new MongoDate())->sec);
    

    ...

    $exampleDate = new MongoDate();
    echo date(DATE_ISO8601, $exampleDate->sec);
    

    EDIT: To save your ISO date, you need to do the following:

    $mongoDateObject = new MongoDate(strtotime("2012-11-02T08:40:12.569Z"));