ユーザーが日付形式を好きなように変更できるようにしたい:
$dateformat = $_POST['format'];
$datestamp = date($dateformat,$timestamp);
$dateformat
有効な日付形式文字列が正しいかどうかを確認するにはどうすればよいですか?
if( strtotime($_POST['format']) !== FALSE)
{
echo 'valid date';
}
else
{
echo 'invalid date';
}
ただし、現在の PHP で定義されていないため、年が 2048 を超える日付では機能しません。
checkdate()は、特定の形式に固執することを決定した場合に、日付を解析できるかどうかを示します。
strtotime()は、日付文字列を解析できるかどうかを知らせます。任意の文字列を渡すことができます。日付を解析できない場合、関数は false を返します。
補足として、日付の入力方法をユーザーに選択させません。これは明らかにあなたにとって非常に複雑になります-しかし、ほとんどのユーザーは日付に関する指示に慣れているため、ユーザーとして、日付をどのように入力する必要があるかを自問します。年、月、日の単純なドロップダウンを提供し、これら 3 つのパラメーターを checkdate() で使用してみませんか?
正規表現の実装は次のとおりです。
$input = 'M d Y';
if(preg_match('#(dd|DD|m|M|mm|MM|y|yy|YY|-|\s)+#', $input)) {
$valid = true;
print date($input);
} else {
print "invalid date format";
}
スペース文字とダッシュ文字が許可されていることを前提としています。
ここにリストされているフラグを指定します:http://php.net/manual/en/datetime.formats.date.php
詳細はこちら: http: //php.net/manual/en/function.date.php
ユーザーにさまざまな日付形式の選択ドロップダウンを提供してから、データベースに保存することをお勧めします。次に、選択した形式を取得して、関数の最初のパラメーターに挿入できdate()
ます。
Zend_Date を調べてみてください。ただし、2012 年 6 月 3 日を 3 月 6 日または 6 月 3 日として解釈することを知らなければ、それは不可能です。
ほら?12/12/12 は日付で、ヨーロッパ人とアメリカ人は誤解なくその日について話すことができます ;-)