如何在PHP中为MongoDB返回ISO日期格式?

use*_*659 13 php time date mongodb isodate

我想将PHP生成的当前日期作为ISO日期格式存储到MongoDB集合中.

ISODate("2012-11-02T08:40:12.569Z")
Run Code Online (Sandbox Code Playgroud)

但是我无法在php中生成这种类型的日期,它将作为ISODate格式存储在MongoDB中.

这就是我所做的.

 $d = new MongoDate(time());
 echo $d;
Run Code Online (Sandbox Code Playgroud)

它正在输出类似的东西,

0.00000000 1353305590
Run Code Online (Sandbox Code Playgroud)

这不是我需要的格式.这该怎么做?

Kav*_*gel 16

您可以运行该__toString功能,或使用该sec字段

__toString将返回usecs中的时间戳,您可以date()在将秒与毫秒分开后传递给它- 请在此处阅读:http://us1.php.net/manual/en/mongodate.tostring.php

或者,我个人更喜欢mongodb只返回秒,可以直接插入date()- 在这里阅读:http://php.net/manual/en/class.mongodate.php

此外,如果您现在正在生成MongoDate(),则无需指定time();

要返回isodate,您需要这样做:

echo date(DATE_ISO8601, (new MongoDate())->sec);
Run Code Online (Sandbox Code Playgroud)

...

$exampleDate = new MongoDate();
echo date(DATE_ISO8601, $exampleDate->sec);
Run Code Online (Sandbox Code Playgroud)

编辑:要保存ISO日期,您需要执行以下操作:

$mongoDateObject = new MongoDate(strtotime("2012-11-02T08:40:12.569Z"));
Run Code Online (Sandbox Code Playgroud)