2014-01-06 32 views
1

我很困惑時區和mongodate,我明白mongo使用UTC。我需要在utc + 1的結果爲php:

date_default_timezone_get()在php中說「歐洲/柏林」,這似乎是正確的。

mongoDate條目是「ISODate(」2014-01-06T10:03:47.182Z「)」,正確的utc + 1是11:03而不是10:03。所以我每天都遇到$ gt/$ lt的問題。

[編輯]
我確切的問題是,用戶註冊0:08,但在mongoDB ISODate它是23:08(和另一天..),所以我有問題,準確地組24小時。

$ dateStart = new MongoDate(strtotime(「2014-01-01 00:00:00」));
$ dateEnd = new MongoDate(strtotime(「2014-12-31 23:59:59」)); ('$ match'=> array('regdate'=> array('$ gt'=> $ dateStart,'$ lt'=> $ dateEnd)))
array('$ ('''='array'('day'=> array('$ dayOfMonth'=>'$ regdate'))),
array(' >'$ day'),'count'=> array('$ sum'=> 1))),
array('$ sort'=> array('_ id.day'=> -1)),
);

多數民衆贊成在我看來1結果,但正確的是2,用戶註冊0:08不是23:08。

我希望你明白我的意思。 :)

感謝和問候,

回答

1

的MongoDB還不瞭解時區因此它只能實現一個,UTC。

雖然這並不是一件壞事,但真正的時區應該在應用程序中實現,而不是在數據庫中實現。

爲此,您可以使用:默認使用UTC的http://uk3.php.net/gmdate

但是,您也可以使用date('c', time());來應用時區到日期,我聽說過這個工程,但我沒有自己測試過。我更願意讓我的應用程序處理時區,這樣我的數據庫就已經標準化了。