Date validity can be checked with a custom class.
DateTime::setDate
date_date_set
(PHP 5 >= 5.2.0)
DateTime::setDate -- date_date_set — 日付を設定する
説明
オブジェクト指向型
手続き型
DateTime オブジェクトの現在の日付をリセットし、別の日付にします。
パラメータ
-
object -
手続き型のみ: date_create() が返す DateTime オブジェクト。 この関数は、このオブジェクトを変更します。
-
year -
その日付の年。
-
month -
その日付の月。
-
day -
その日付の日。
返り値
メソッドチェインに使う DateTime オブジェクトを返します。失敗した場合に FALSE を返します。
変更履歴
| バージョン | 説明 |
|---|---|
| 5.3.0 | 成功した場合の返り値が
NULL から DateTime に変更されました。 |
例
例1 DateTime::setDate() の例
オブジェクト指向型
<?php
$date = new DateTime();
$date->setDate(2001, 2, 3);
echo $date->format('Y-m-d');
?>
手続き型
<?php
$date = date_create();
date_date_set($date, 2001, 2, 3);
echo date_format($date, 'Y-m-d');
?>
上の例の出力は以下となります。
2001-02-03
例2 範囲を超えた値が親の値に加算される例
<?php
$date = new DateTime();
$date->setDate(2001, 2, 28);
echo $date->format('Y-m-d') . "\n";
$date->setDate(2001, 2, 29);
echo $date->format('Y-m-d') . "\n";
$date->setDate(2001, 14, 3);
echo $date->format('Y-m-d') . "\n";
?>
上の例の出力は以下となります。
2001-02-28 2001-03-01 2002-02-03
参考
- DateTime::setISODate() - ISO 日付を設定する
- DateTime::setTime() - 時刻を設定する
wkeevers96 at yahoo dot com
19-Mar-2012 11:44
remy215 at laposte dot net
11-Jan-2012 03:59
Be warned, DateTime::setDate() does not check for invalid input.
Illustration:
<?php
$dt = new DateTime();
$dt->setDate(2012, 11, 31); // returns DateTime object and not false although this date does not exist
echo $dt->format('Y-m-d'); // output: 2012-12-01
?>
No error was generated on entering a non existing date, php silently changed it.
