Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php时区MongoDB$gt/$lt故障_Php_Mongodb_Datetime - Fatal编程技术网

php时区MongoDB$gt/$lt故障

php时区MongoDB$gt/$lt故障,php,mongodb,datetime,Php,Mongodb,Datetime,我对时区和mongodate感到困惑,我知道mongo使用UTC。我需要php的utc+1结果: php中的date\u default\u timezone\u get()表示“Europe/Berlin”,这似乎是正确的 mongoDate条目为“ISODate”(“2014-01-06T10:03:47.182Z”)。utc+1的正确值为11:03而非10:03。因此,我对每日分组的$gt/$lt有困难 [编辑] 我的确切问题是,一个用户注册的时间是0:08,但在mongoDB ISODa

我对时区和mongodate感到困惑,我知道mongo使用UTC。我需要php的utc+1结果:

php中的date\u default\u timezone\u get()表示“Europe/Berlin”,这似乎是正确的

mongoDate条目为“ISODate”(“2014-01-06T10:03:47.182Z”)。utc+1的正确值为11:03而非10:03。因此,我对每日分组的$gt/$lt有困难

[编辑]
我的确切问题是,一个用户注册的时间是0:08,但在mongoDB ISODate中是23:08(另一天…),因此我有问题将24小时精确分组

$dateStart=新蒙哥达(标准时间(“2014-01-01 00:00:00”)
$DATEND=新蒙哥达特(标准时间(“2014-12-31 23:59:59”)
数组(
数组('$match'=>array('regdate'=>array('$gt'=>$dateStart,$lt'=>$dateEnd)),
数组('$project'=>array('day'=>array('$dayOfMonth'=>'$regdate')),
数组('$group'=>array(''U id'=>array('day'=>'$day'),'count'=>array('$sum'=>1)),
数组('$sort'=>数组(''u id.day'=>-1)),
);

这显示了1个结果,但正确的是2,用户注册的是0:08而不是23:08

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


感谢并向您致意,

MongoDB还不了解时区,因此它只实现了一个UTC

但这并不是一件坏事,实际上时区应该在应用程序中实现,而不是在数据库中实现

为此,您可以使用:默认情况下使用UTC

但是,您也可以使用
date('c',time())要将时区应用于日期,我听说这是可行的,但我自己还没有测试过。我更喜欢让我的应用程序以标准化数据库的方式处理时区