Php проверка 24-часового формата времени

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

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

18:00:00, 23:00:00, 01:00:00

5 ответов


это соответствует 24-часовому времени, включая секунды

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

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

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

здесь свой окончательный образец там готов быть использованным.

$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:00:00";

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

это в regex? Вы можете легко использовать PHPs strtotime-функция для проверки даты и времени (также без даты). 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!'

это работает как шарм для меня.

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