1

PHP DateTime クラスの奇妙な動作

$x = '23120-7-7';
$x = new \DateTime($x);
var_dump($x);

与える

object(DateTime)#988 (3) {
  ["date"]=>
  string(19) "2000-07-07 23:12:00"
  ["timezone_type"]=>
  int(3)
  ["timezone"]=>
  string(3) "UTC"
}

日付を検証したかったのですが、phpにはdatetimeクラスしかありません。どうすれば確認できますか

私の日付は有効ですか?

4

3 に答える 3

2

date_create_from_format を使用する

$x = '23120-7-7';
$x = \DateTime::createFromFormat('Y-m-d', $x);
var_dump($x);

出力:

bool(false)

エラーの詳細を表示するには:

$errors = DateTime::getLastErrors();
var_dump($errors);

出力:

array(4) {
  ["warning_count"]=>
  int(1)
  ["warnings"]=>
  array(1) {
    [7]=>
    string(27) "The parsed date was invalid"
  }
  ["error_count"]=>
  int(2)
  ["errors"]=>
  array(2) {
    [4]=>
    string(40) "The separation symbol could not be found"
    [7]=>
    string(13) "Trailing data"
  }
}
于 2012-11-26T07:22:45.620 に答える
0

それをタイムスタンプに変換してから、必要な形式で新しい日付を設定してください date("ymd",timestamp)、エラーをチェックします

于 2012-11-26T07:32:14.833 に答える
0

直接的な回答が必要な場合は、「checkdate」メソッドを使用できます。まず、日付をダッシュ​​ (-) で展開します。おそらく、使用している日付のスタイルがわかりません。次に、checkdate を使用します。

于 2012-11-26T06:44:14.730 に答える