Please note that DateTime:setDate() accepts out-of-range values without warnings.
EG:
<?php
date_default_timezone_set('Europe/London');
$datetime = new DateTime('2008-08-03 14:52:10');
$datetime->setDate(2008, 13, 12);
?>
will reset the DateTime object's date to now. The best approach is to make a wrapper to setDate() which do check for out-of-range values.
DateTime::setDate
(PHP 5 >= 5.2.0)
DateTime::setDate — Sets the date
Description
Resets the current date of the DateTime object to a different date.
Parameters
- object
-
Procedural style only: A DateTime object returned by date_create()
- year
-
Year of the date.
- month
-
Month of the date.
- day
-
Day of the date.
Return Values
Returns the modified DateTime.
Examples
Example #1 Object oriented example usage
<?php
date_default_timezone_set('Europe/London');
$datetime = new DateTime('2008-08-03 14:52:10');
$datetime->setDate(2008, 10, 12);
echo $datetime->format(DATE_RFC2822);
?>
Example #2 Procedural example usage
<?php
date_default_timezone_set('Europe/London');
$datetime = date_create('2008-08-03 14:52:10');
date_date_set($datetime, 2008, 10, 12);
echo date_format($datetime, DATE_RFC2822);
?>
The above example will output:
Sun, 12 Oct 2008 14:52:10 +0100
DateTime::setDate
melicerte at mailinator dot com
12-Oct-2009 09:12
12-Oct-2009 09:12
