CakePHP daysAsSql导致错误的条件 我正在为我的一个应用程序启用时区支持。在内部,我们根据时区保存每个日期Europe/Vienna

CakePHP daysAsSql导致错误的条件 我正在为我的一个应用程序启用时区支持。在内部,我们根据时区保存每个日期Europe/Vienna,php,cakephp,datetime,Php,Cakephp,Datetime,现在,我想在用户级别启用时区支持,而不需要借助很棒的CakePHPConfig.timezone特性 因此,当用户登录时,我将用户时区写入Config.timezone,一切都正常运行 现在,让我们考虑以下场景: 我在数据库中有一些记录,比如: -- created: 2014-03-17 09:00:00 // Austrian time! (Object.created >= '2014-03-16 20:00:00') AND (Object.created <= '2014

现在,我想在用户级别启用时区支持,而不需要借助很棒的CakePHP
Config.timezone
特性

因此,当用户登录时,我将用户时区写入Config.timezone,一切都正常运行

现在,让我们考虑以下场景:

我在数据库中有一些记录,比如:

-- created: 2014-03-17 09:00:00 // Austrian time!
(Object.created >= '2014-03-16 20:00:00') AND (Object.created <= '2014-03-17 19:59:59')
因此,使用
CakeTime::format()
正确显示数据库中提到的记录(奥地利和巴西目前相差4小时):

用户现在可以使用日期选择器从数据库导出一些记录。让我们想想同样一位来自巴西的用户,他想导出一些记录。(s) 他选择2014-03-17作为日期,并假设收到他/她的时区内的所有记录

目前,我正在使用以下查询:

// from, to = 2014-03-17
$records = $this->find('all', ['conditions' => [CakeTime::daysAsSql($from, $to, 'Object.created')]]);
不幸的是,
CakeTime::daysAsSql
返回以下条件:

(Object.created >= '2014-03-16 00:00:00') AND (Object.created <= '2014-03-16 23:59:59')

(Object.created>='2014-03-16 00:00:00')和(Object.created='2014-03-16 20:00:00'),以及(Object.created始终将所有内容保存为UTC.thx David。但是我们这里有一个非常大的项目,几年前我们开始保存维也纳时区的所有记录。在我的下一个项目中,我会完全按照UTC的方式进行,但我认为caketime helper可以正确地解决这个偏移问题。几分钟前我创建了一个pull请求。May不管怎样,它能更好地澄清这个问题。
(Object.created >= '2014-03-16 20:00:00') AND (Object.created <= '2014-03-17 19:59:59')