PHP проверяет 24-часовой формат времени

Я разрешаю пользователям выбирать час из00:00:00 в23:00:00 и нужно проверить, если они представляют правильный формат. Существует ли регулярное выражение или функция php, которая проверяет 24-часовой формат, например,HH:MM:SS?

Я нашел несколько примеров регулярных выражений, но 24-часовой период времени, который я проверяю, всегда установлен на00 за минуты и секунды. Меняется только час.

Например

18:00:00, 23:00:00, 01:00:00
 Matthew13 июн. 2012 г., 00:29
Проверка данных всегда является реальной проблемой, независимо от пользовательского интерфейса.
 Zuul13 июн. 2012 г., 00:26
Пользователи могут изменить выбор, который они сделали? например, вменяющий "25: 00: 00"; или "банан" ?
 CyberJunkie13 июн. 2012 г., 00:29
@Zuul, конечно, они могут, они выбирают время из выпадающего списка
 Scott Saunders13 июн. 2012 г., 00:29
Ответ sachleen - это то, что вы просили, но если ваша настоящая проблема заключается в том, чтобы предоставить пользователю способ ввода числа от 00 до 23, рассмотрите возможность использования выпадающего меню.
 Zuul13 июн. 2012 г., 00:33
@ Матвей, согласился, просто пытаюсь выяснить, пользователи "выбирают" метод! Чтобы увидеть, если проблема была в процессе проверки!

Ответы на вопрос(5)

$myTime = '23:00:00';

$time = preg_match('#^([01]?[0-9]|2[0-3]):[0-5][0-9](:[0-5][0-9])?$#', $myTime);

if ( $time == 1 )
{
  // make a error!
}
else
{
  // make a error!
}

$time = "23:59:60";    
preg_match("/^([0-1][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$/", $time)

$time="23:00:00";

preg_match('#^([01]?[0-9]|2[0-3]):[0-5][0-9](:[0-5][0-9])?$#', $time);
 14 окт. 2016 г., 19:10
Работает как шарм! (спас мой день).
Решение Вопроса

([01]?[0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]

Если вы хотите только 00 минут и секунд, то

([01]?[0-9]|2[0-3]):00:00
 18 июн. 2012 г., 00:09
^ означает начало строки и$ конец строки Так что с теми, кто в нем, не может быть ничего, что окружает время. Так что да, это будет не только работать, но и правильно.
 CyberJunkie18 июн. 2012 г., 01:12
классно! Спасибо за ваше любезное подтверждение :)
 CyberJunkie17 июн. 2012 г., 23:29
Я забыл спросить .. будут ли правильными следующие разделители для регулярного выражения 2?/^([01]?[0-9]|2[0-3]):00:00$/
 CyberJunkie13 июн. 2012 г., 03:55
Спасибо! Ваш код поможет многим.

Это должно быть RegEx? Вы можете легко использовать PHPstrtotime-функция для проверки даты и времени (также работает без даты). strtotime возвращаетсяfalse (-1 до PHP 5.1), если данное время недействительно. Не забудьте использовать=== операнд поэтому!

if (strtotime("12:13") === false) { echo("Wrong Time!"); } // Echos nothing
if (strtotime("19:45") === false) { echo("Wrong Time!"); } // Echos nothing
if (strtotime("17:62") === false) { echo("Wrong Time!"); } // Echos 'Wrong Time!'

Ваш ответ на вопрос