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 — Assigne la date
Description
Assigne la date courante de l'objet DateTime à une nouvelle date.
Liste de paramètres
- object
-
Seulement en style procédural : un objet DateTime retourné par date_create()
- year
-
Année de la date.
- month
-
Mois de la date.
- day
-
Jour de la date.
Valeurs de retour
Retourne l'objet DateTime modifié.
Exemples
Exemple #1 Exemple avec DateTime::setDate()
<?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);
?>
Exemple #2 Exemple avec DateTime::setDate() (procédural)
<?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);
?>
L'exemple ci-dessus va afficher :
Sun, 12 Oct 2008 14:52:10 +0100
DateTime::setDate
melicerte at mailinator dot com
12-Oct-2009 12:12
12-Oct-2009 12:12
