Я пытаюсь сделать ввод данных пользователем, чтобы ограничить поиск. Я использую следующее:Определить DateTime вывел день в конструкторе
try {
$begin = new \DateTime($range['begin']);
} catch (\Exception $e) {
$begin = null;
}
Если дата не может быть построена, запрос (не показан) не изменяется.
Иногда пользователи вводят только месяц, и было бы очевидно, что пользователь хочет выполнить поиск между первым и последним днем месяца, и я могу изменить запрос по-другому.
К сожалению, php infers, без другой спецификации, которую пользователь имеет в виду в начале месяца. Есть ли способ определить, произошло ли это? Другой способ задать этот вопрос: как определить, что пользователь предоставил действительный месяц без дня и отличает его от даты поставки с первым днем месяца, который использует множество форматов DateTime автоматически интерпретирует?
Мой первый проход использовал date_parse, но это также указывает дату.
код [ 'DateTime'] (HTTP: // php.net/manual/en/datetime.construct.php) принимает множество форматов входной строки. Он делает все возможное, чтобы извлечь дату и время из предоставленного ввода. Правила описаны в [документации] (http://php.net/manual/en/datetime.formats.php). Для достижения своей цели вы должны выполнить синтаксический анализ перед передачей входной строки в ['DateTime'], чтобы определить особые ситуации, которые вы хотите обработать (когда пользователь вводит только имя месяца, т. Е.). – axiac
Здесь вы не можете найти много информации. Как выглядит вход? Не можете ли вы просто проверить формат ввода и соответствующим образом изменить его? – miken32
Я предпочитаю простое поле выбора, в котором пользователь может выбрать одно значение из определенного списка оппонентов [сегодня, вчера, 1 неделя, 2 недели и т. Д.], Так что теперь вы можете создать действительный объект DateTime, если это необходимо, или не нуждаться в точках последних периодов, использовать datepicker с функциональностью диапазона, где одна - дата начала и дата окончания второго значения. – DTukans