Version complète: sur le forum Webmaster Hub : comment diminuer 1j d'un date donné
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
choklata
comment diminuer 2j d'un date donné en php ?
exemple:
$date="2003/05/06";

???===> $date-2= 2003/05/04
Théo B.
Tu peux faire :

CODE
$date1=substr($date,6);
$date=substr($date,-2,2);
settype($date,'integer');
echo $date1.$date-2;


Ou encore :

CODE
$annee=substr($date,4);
$mois=substr($date,-4,2);
$jour=substr($date,-2,2);
echo date('Y/m/d',mktime(0,0,0,$mois,$jour-2,$annee));
Sonia Gazil
Bonjour,

La première solution de Théo B. ne marchera pas. D'une part, il y a des problèmes dans son code, et d'autre part, elle posera problème dans certains cas. Par exemple, si date contient "2003/05/02", sa solution retournera "2003/05/00".

La seconde solution est correcte, mais il y a une petite erreur dans le premier substr. Il faudrait faire :

CODE
$annee=substr($date,0,4);
$mois=substr($date,-4,2);
$jour=substr($date,-2,2);
echo date('Y/m/d',mktime(0,0,0,$mois,$jour-2,$annee));
Dan
Bonjour,

Et pourquoi ne pas utiliser les fonctions qui sont faites pour ça, par exemple strtotime ? wink.gif

Cela ferait par exemple:
CODE
$date=date("Y/m/d",strtotime("+2 day",strtotime("2005/12/31")));


Simple, non ? Et ça tient compte de l'heure d'hiver, heure d'été, années bissextiles et tout le tralala. smile.gif

Pour mieux comprendre, on peut le mettre sur 3 lignes:
CODE
$date=strtotime("2005/12/31");
$date=strtotime("+2 day",$date);
$date=date("Y/m/d",$date);

Mais je préfère sur une seule ligne wink.gif
Dan
Un exemple, sur deux années dont une bissextile:
CODE
$date=date("Y/m/d",strtotime("-2 day",strtotime("2005/03/01")));
print $date;
affiche "2005/02/27"
CODE
$date=date("Y/m/d",strtotime("-2 day",strtotime("2004/03/01")));
print "<br />".$date;
affiche "2004/02/28"
choklata
et comment diminuer/ajouter (un mois ou une année) d'un date donné
donner le cas general svp
et merci pour l'aide
Dan
Tout simplement en remplaçant le "-2 day" par "-n month" ou "-n year"...
avec n étant égal au nombre de jours/mois/années.
On peut même utiliser "week" pour les semaines...

Remplacer le signe - par + pour ajouter smile.gif

Dan
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.