16

我想在集合中插入一个日期。我使用该类MongoDate来创建日期对象:

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

问题是,一旦它在我的收藏中,日期就会提前 2 小时。

例如,$todayhere 应该是2013-05-28 00:00:00,但一旦在数据库中它是2013-05-27 22:00:00.

我无法通过手动将 2 小时添加到时间戳来解决此问题,因为我在查询中使用了日期。

运行Mongo的服务器本地时间设置为我国正确时间。

4

4 回答 4

21

这适用于新的 php 版本的 mongodb:

new MongoDB\BSON\UTCDateTime((new DateTime($today))->getTimestamp()*1000)
于 2016-08-14T07:36:06.240 回答
15
$dt = new DateTime(date('Y-m-d'), new DateTimeZone('UTC'));
$ts = $dt->getTimestamp();
$today = new MongoDate($ts);

这是有效的。

于 2013-05-28T14:22:00.753 回答
2

删除旧文档并插入

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

        $collection->insert($bill);
于 2015-11-24T11:41:39.387 回答
0

仅供参考:如果您需要为您的对象模型创建日期。

$date_created = new \MongoDB\BSON\UTCDateTime(time()*1000);
于 2019-09-26T09:06:46.427 回答