diff --git a/include/class.forms.php b/include/class.forms.php index d2281349eea9c805af9f3b8f6dff61b3ac7a4a9b..f74f69789b69ef91306cd69c82e34b440db02a75 100644 --- a/include/class.forms.php +++ b/include/class.forms.php @@ -2415,15 +2415,17 @@ class DatetimeField extends FormField { case 'before': return new Q(array("{$name}__lt" => $value)); case 'between': - foreach (array('left', 'right') as $side) { - $value[$side] = is_int($value[$side]) - ? DateTime::createFromFormat('U', !$config['gmt'] - ? Misc::gmtime($value[$side]) : $value[$side]) ?: $value[$side] - : $value[$side]; - } + $tz = new DateTimeZone($cfg->getTimezone()); + $dbtz = new DateTimeZone($cfg->getDbTimezone()); + $left = Format::parseDateTime($value['left']); + $right = Format::parseDateTime($value['right']); + $left = $left->setTime(00, 00, 00); + $right = $right->setTime(23, 59, 59); + $left->setTimezone($tz)->setTimezone($dbtz); + $right->setTimezone($tz)->setTimezone($dbtz); return new Q(array( - "{$name}__gte" => $value['left'], - "{$name}__lte" => $value['right'], + "{$name}__gte" => $left->format('Y-m-d H:i:s'), + "{$name}__lte" => $right->format('Y-m-d H:i:s'), )); case 'ndaysago': $int = $intervals[$value['int'] ?: 'd'] ?: 'DAY';