У меня есть онлайн-форма, в которой есть несколько полей с данными о времени. Я храню эти данные в базе данных MySQL в поле time
, которому нужен формат hh:mm:ss
. Если пользователь вводит время в этом формате правильно, то я хочу принять данные. Я также хочу позволить пользователям вводить время в стандартном американском времени, например 9:30 am
или 11:25 pm
или 10:27 am
и т. Д.
В основном я хочу проверить, находится ли время в правильном формате базы данных сначала (hh:mm:ss
), затем, если это не так, проверить, находится ли оно во втором принятом формате (hh:mm am/pm
), и если это так, тогда я буду использовать функцию PHP strtotime()
, чтобы преобразовать ее в формат времени базы данных. Если это не в любом из этих форматов, тогда мы показываем сообщение об ошибке и умираем.
Кто-нибудь знает, как проверить, соответствует ли значение переменной одному из этих форматов времени?
Псевдо-PHP код того, что я хочу сделать:
<?php
$value = //some time;
if (is_database_time($value)){
// good no problem
}else if (is_usa_time($value)){
$value = strtotime($value);
}else{
die("error incorrect time format, try again.");
}
?>
** РЕДАКТИРОВАТЬ **
Спасибо всем за помощь. Я использовал некоторую информацию здесь, чтобы сделать функцию, которая прекрасно работает:
<?php
function filter_time($key,$value){
// this section handles the storage of time data
if (preg_match('/^(0?\d|1\d|2[0-3]):[0-5]\d:[0-5]\d$/', $value)){
//do nothing
}else if (preg_match('/^(0?\d|1[0-2]):[0-5]\d\s(am|pm)$/i', $value)){
$value = date( 'H:i:s', strtotime($value));
}else{
display_error('incorrect time format in '.$key.' field.');
}
return $value;
}
?>