Try to convert string into DateTime object from more date formats
public static tryConvertToDate ( mixed $value, array $formats = [] ) : DateTime | ||
$value | mixed | |
$formats | array | |
리턴 | DateTime |
/** * @param mixed $row * @param FilterDateRange $filter * @return void */ public function applyFilterDateRange($row, FilterDateRange $filter) { $format = $filter->getPhpFormat(); $condition = $filter->getCondition(); $values = $condition[$filter->getColumn()]; $row_value = $row[$filter->getColumn()]; if ($values['from'] !== NULL && $values['from'] !== '') { $date_from = DateTimeHelper::tryConvertToDate($values['from'], [$format]); $date_from->setTime(0, 0, 0); if (!$row_value instanceof \DateTime) { /** * Try to convert string to DateTime object */ try { $row_value = DateTimeHelper::tryConvertToDate($row_value); } catch (DataGridDateTimeHelperException $e) { /** * Otherwise just return raw string */ return FALSE; } } if ($row_value->getTimeStamp() < $date_from->getTimeStamp()) { return FALSE; } } if ($values['to'] !== NULL && $values['to'] !== '') { $date_to = DateTimeHelper::tryConvertToDate($values['to'], [$format]); $date_to->setTime(23, 59, 59); if (!$row_value instanceof \DateTime) { /** * Try to convert string to DateTime object */ try { $row_value = DateTimeHelper::tryConvertToDate($row_value); } catch (DataGridDateTimeHelperException $e) { /** * Otherwise just return raw string */ return FALSE; } } if ($row_value->getTimeStamp() > $date_to->getTimeStamp()) { return FALSE; } } return TRUE; }
/** * Filter by date range * @param Filter\FilterDateRange $filter */ public function applyFilterDateRange(Filter\FilterDateRange $filter) { $conditions = $filter->getCondition(); $c = $this->checkAliases($filter->getColumn()); $value_from = $conditions[$filter->getColumn()]['from']; $value_to = $conditions[$filter->getColumn()]['to']; if ($value_from) { $date_from = DateTimeHelper::tryConvertToDate($value_from, [$filter->getPhpFormat()]); $date_from->setTime(0, 0, 0); $p = $this->getPlaceholder(); $this->data_source->andWhere("{$c} >= ?{$p}")->setParameter($p, $date_from->format('Y-m-d H:i:s')); } if ($value_to) { $date_to = DateTimeHelper::tryConvertToDate($value_to, [$filter->getPhpFormat()]); $date_to->setTime(23, 59, 59); $p = $this->getPlaceholder(); $this->data_source->andWhere("{$c} <= ?{$p}")->setParameter($p, $date_to->format('Y-m-d H:i:s')); } }