Skip to content

Commit d43d6f8

Browse files
committed
MAGETWO-70327: Customer admin grid incorrectly filters by Date of Birth field
1 parent f7b5f3b commit d43d6f8

File tree

2 files changed

+26
-18
lines changed

2 files changed

+26
-18
lines changed

app/code/Magento/Ui/Component/Filters/Type/Date.php

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -79,26 +79,22 @@ protected function applyFilter()
7979
}
8080

8181
if (is_array($value)) {
82-
$dateFrom = null;
83-
$dateTo = null;
84-
8582
if (isset($value['from'])) {
86-
$dateFrom = $this->wrappedComponent->convertDate($value['from']);
87-
if ($this->getData('config/skipTime')) {
88-
$dateFrom->setTime(0, 0, 0);
89-
}
90-
$this->applyFilterByType('gteq', $dateFrom);
83+
$this->applyFilterByType(
84+
'gteq',
85+
$this->wrappedComponent->convertDate(
86+
$value['from'],0, 0, 0, !$this->getData('config/skipTime')
87+
)
88+
);
9189
}
9290

9391
if (isset($value['to'])) {
94-
$dateTo = $this->wrappedComponent->convertDate($value['to']);
95-
if ($this->getData('config/skipTime')) {
96-
$dateTo->setTime(0, 0, 0);
97-
}
98-
if ($dateFrom == $dateTo) {
99-
$dateTo->setTime(23, 59, 59);
100-
}
101-
$this->applyFilterByType('lteq', $dateTo);
92+
$this->applyFilterByType(
93+
'lteq',
94+
$this->wrappedComponent->convertDate(
95+
$value['to'], 23, 59, 59, !$this->getData('config/skipTime')
96+
)
97+
);
10298
}
10399
} else {
104100
$this->applyFilterByType('eq', $this->wrappedComponent->convertDate($value));

app/code/Magento/Ui/Component/Form/Element/DataType/Date.php

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,11 @@ class Date extends AbstractDataType
3131
*/
3232
protected $wrappedComponent;
3333

34+
/**
35+
* @var TimezoneInterface
36+
*/
37+
protected $localeDate;
38+
3439
/**
3540
* Constructor
3641
*
@@ -97,9 +102,13 @@ public function getComponentName()
97102
* Convert given date to default (UTC) timezone
98103
*
99104
* @param int $date
105+
* @param int $hour
106+
* @param int $minute
107+
* @param int $second
108+
* @param bool $setUtcTimeZone
100109
* @return \DateTime|null
101110
*/
102-
public function convertDate($date)
111+
public function convertDate($date, $hour = 0, $minute = 0, $second = 0, $setUtcTimeZone = true)
103112
{
104113
try {
105114
$dateObj = $this->localeDate->date(
@@ -110,8 +119,11 @@ public function convertDate($date)
110119
$this->getLocale(),
111120
true
112121
);
122+
$dateObj->setTime($hour, $minute, $second);
113123
//convert store date to default date in UTC timezone without DST
114-
$dateObj->setTimezone(new \DateTimeZone('UTC'));
124+
if ($setUtcTimeZone) {
125+
$dateObj->setTimezone(new \DateTimeZone('UTC'));
126+
}
115127
return $dateObj;
116128
} catch (\Exception $e) {
117129
return null;

0 commit comments

Comments
 (0)