How to return ISO date format in PHP for MongoDB?

user1518659 picture user1518659 · Nov 19, 2012 · Viewed 32.9k times · Source

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?

Answer

Kavi Siegel picture Kavi Siegel · Nov 19, 2012

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: http://us1.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"));