3

人間が読める形式に変更しようとしている動的な日付値がいくつかあります。私が取得する文字列のほとんどは、yyyymmddたとえば 20120514 のような形式ですが、そうでないものもあります。日付ではない可能性があるため、その形式でないものはスキップする必要があります。

このようなチェックをコードに追加するにはどうすればよいですか?

date("F j, Y", strtotime($str))
4

3 に答える 3

7

この関数を次の目的で使用できます。

/**
 * Check to make sure if a string is a valid date.
 * @param $str   String under test
 *
 * @return bool  Whether $str is a valid date or not.
 */
function is_date($str) {
    $stamp = strtotime($str);
    if (!is_numeric($stamp)) {
        return FALSE;
    }
    $month = date('m', $stamp);
    $day   = date('d', $stamp);
    $year  = date('Y', $stamp);
    return checkdate($month, $day, $year);
}

@ソース

于 2012-08-28T18:26:51.457 に答える
4

簡単なチェックのために、次のことを行う必要がctype_digitありstrlenます。

if(!ctype_digit($str) or strlen($str) !== 8) {
    # It's not a date in that format.
}

あなたはより徹底的にすることができますcheckdate

function is_date($str) {
    if(!ctype_digit($str) or strlen($str) !== 8)
        return false;

    return checkdate(substr($str, 4, 2),
                     substr($str, 6, 2),
                     substr($str, 0, 4));
}
于 2012-08-28T18:25:27.377 に答える
-1

正規表現を使用して、文字列が 8 桁かどうかを確認します。

if(preg_match('/^\d{8}$/', $date)) {
    // This checks if the string has 8 digits, but not if it's a real date
}
于 2012-08-28T18:25:25.093 に答える