Aller au contenu

comment diminuer 1j d'un date donné


Sujets conseillés

Posté

Tu peux faire :

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

Ou encore :

$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));

Posté

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 :

$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));

Posté

Bonjour,

Et pourquoi ne pas utiliser les fonctions qui sont faites pour ça, par exemple strtotime ? ;)

Cela ferait par exemple:

$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. :)

Pour mieux comprendre, on peut le mettre sur 3 lignes:

$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 ;)

Posté

Un exemple, sur deux années dont une bissextile:

$date=date("Y/m/d",strtotime("-2 day",strtotime("2005/03/01")));
print $date;

affiche "2005/02/27"

$date=date("Y/m/d",strtotime("-2 day",strtotime("2004/03/01")));
print "<br />".$date;

affiche "2004/02/28"

Posté (modifié)

et comment diminuer/ajouter (un mois ou une année) d'un date donné

donner le cas general svp

et merci pour l'aide

Modifié par choklata
Posté

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 :)

Dan

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...