特定のタイプの値との間で変換する関数に値のリストを渡します。たとえば、PHPの日付が渡された場合、またはタイムスタンプが渡された場合、特定の日付形式に変換したいと思います。これが私が今持っているコードです:
public static function attemptParseString($str) {
$check = strtotime($str);
if ($check !== FALSE) {
return date(ts_default_date_format, $check).' <span class="grey">(Orig: '.$str.')</span>';
}
$check = date(ts_default_date_format, $str);
if ($check !== FALSE) {
return $check.' <span class="grey">(Orig: '.$str.')</span>';
}
return $str;
}
ほとんどの日付値(「1361215542」や「2013-02-1813:25:42」など)は期待どおりに返されますが、「127.0.0.1」などの「1969-12-3118」の解析で奇妙な問題が発生します。 02:07'、'GET'は'2013-02-18 04:25:42'として解析され、'80'は'1969-12-3118:01:20'として解析されます。
日付関数が文字列を日付として解析するかどうかをチェックする以外に、文字列が有効な日付であるかどうかをインテリジェントに判断するにはどうすればよいですか?
次のような同様の質問を見たことがありますが、正しくありませんでした(プログラミング言語が異なるものもあれば、すべての有効な日付が含まれているものの、形式が異なるものもあります(日付と日付以外の文字列が含まれています)。
ユニバーサルフィードパーサーで日付を取得する際の問題 すべての形式の日付パーサー Date()関数からの予期しない結果
ありがとう!