2013-05-28 88 views
9

我想向集合中插入日期。 我使用類MongoDate創建日期對象:在mongodb中插入日期

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

的問題是,一旦它在我的收藏日期爲2小時前。

例如,$today這裏應該是2013-05-28 00:00:00,但是一旦在數據庫中就是2013-05-27 22:00:00

我無法通過手動添加2小時來解決此問題,因爲我在查詢中使用日期時間戳。

Mongo運行的服務器的本地時間設置爲我的國家的正確時間。

+0

有什麼不好保存日期爲'新Date'對象?它將包含時區數據 – Sagish

+1

MongoDB中的所有日期都是UTC,爲什麼不能讓你的應用程序時區知道? – Sammaye

+0

我在$ gte和$ lte操作符的查詢中使用日期作爲範圍。這就是爲什麼我想使用MongoDate格式,它允許比較並且易於閱讀(時間戳不是)。我需要找到一種獨立於我的時區和夏令時/冬令時的更改插入日期的方法,因爲這會導致問題。 –

回答

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

這是行得通的。

+4

不工作 2015-08-18T00:00:00.000Z –

2

刪除舊文件並插入

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

     $collection->insert($bill); 
9

這MongoDB中的新的PHP版本的作品:

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