時間データを含むいくつかのフィールドを持つオンライン フォームがあります。このデータを MySQL データベースのtime
フィールドに格納します。これには format が必要ですhh:mm:ss
。ユーザーがこの形式で時間を正しく入力した場合、データを受け入れたいと思います。また、ユーザーが米国標準時間で時刻を入力できるようにしたいと考えてい9:30 am
ます。11:25 pm
10:27 am
基本的に、最初に時刻が適切なデータベース形式であるかどうかをテストし ( hh:mm:ss
)、そうでない場合は、2 番目に受け入れられた形式であるかどうかをテストし ( 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;
}
?>