Мне нужно регулярное выражение для проверки даты и времени в следующем формате: yyyy-mm-ddThh:mm:ss
. T - всего лишь символ между датой и временем. Спасибо за помощьphp regex для даты и времени
ответ
Полностью с питанием решение:
function validate($str)
{
preg_match('/^([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})$/', $str, $matches);
if (count($matches) != 7)
return false;
$valid_year = range(2000, 2050); // your range
$valid_month = range(1, 12);
$valid_day = range(1, 31);
$valid_hour = range(0, 24);
$valid_minute = range(0, 59);
$valid_second = range(0, 59);
list($str, $year, $month, $day, $hour, $minute, $second) = $matches;
foreach(array('year', 'month', 'day', 'hour', 'minute', 'second') as $part)
{
if (!in_array($$part, ${'valid_'.$part}))
return false;
}
return checkdate($month, $day, $year); // this will reject absurd values like February 30 or April 31
}
EDIT: Я не доверяю strtotime
. Например: «Допустимый диапазон временной метки, как правило, от Fri, 13 Dec 1901 20:45:54 UTC to Tue, 19 Jan 2038 03:14:07 UTC». (приведено на странице с strtotime
). Что делать, если я хочу принять даты из этого диапазона? Для меня strtotime
- неизвестный черный ящик. Не поймите меня неправильно: я использую это, в конце концов! Но я бы этого не сделал.
Попробуйте это регулярное выражение, положив письмо «T» между датой регулярных выражений и времени регулярное выражение:
(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})
^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}$
Это обеспечит его в нужном формате. Затем вам нужно вызвать функцию типа strtotime, чтобы гарантировать, что это также действительное время и дата.
Я не думаю, что это действительно необходимо, поскольку люди/приложения могут иметь эту строку даты, введенную в разных форматах, в зависимости от локали системы.
Что должно работать лучше всего, получает UNIX_TIMESTAMP с указанной даты и проверяет, является ли он действительным.
Пример:
$date1 = "2011-02-23T13:04:41";
$date2 = str_replace("T", " ", $date1); // removing the T
$date3 = strtotime($date2);
Теперь вы просто проверить и работать с $ date3 .. если это действительное или соответствует вашим необходимым критериям, то исходная введенная дата, а также.
Только в случае, если вам не нужен весь этот беспорядок, идти равнина:
(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}) // pseudo - not tested
Проверяется, если значение времени представляет собой действительную дату:
$t = strtotime($yourTimeString);
if ($t === FALSE) {
// $yourTimeString is not valid.
}
Если вы хотите проверить string, используйте проверку регулярных выражений.
- 1. Regex соответствие даты и времени
- 2. Regex для извлечения даты и времени
- 3. Java Regex для времени Даты
- 4. PHP: проверка времени RegEx?
- 5. PHP Regex для формат даты
- 6. Regex, необходимый для разбора строки даты/времени
- 7. Regex шаблон для проверки времени даты
- 8. сравнение даты и времени php
- 9. PHP функция даты и времени
- 10. Regex для извлечения даты и времени из журнала
- 11. Формат даты и времени PHP и MySQL
- 12. Регулярное выражение для текущей даты и времени
- 13. Настройка времени даты PHP
- 14. Расчет даты/времени PHP
- 15. Выбор даты и времени для выбора даты
- 16. Ошибка времени/даты PHP
- 17. PickerView для даты и времени
- 18. php-regex цифры для единиц времени
- 19. JavaScript даты и времени
- 20. Выбор времени и даты (Javascript/PHP)
- 21. Проверка PHP, если 5min + времени и даты
- 22. regex для проверки времени
- 23. JS даты и времени в PHP преобразования
- 24. PHP Преобразование формата даты и времени
- 25. Проверка даты и времени в PHP
- 26. Установка переменных даты и времени в PHP
- 27. PHP Ошибка формата даты и времени
- 28. Определение времени и даты пользователя в PHP
- 29. Функция времени и даты PHP не работает
- 30. PHP сравнить две даты и времени
Это первый шаг, так как он позволит что-то вроде «1234-56-78T90: 98: 76». –
Спасибо. Другая часть проверки не является проблематичной. –