Page 1 sur 2

Jour Suivant

Posté : 05 oct. 2006, 23:26
par Photographiquement Vôtre
Bonsoir,

Je pars d'une date :

$date_depart= "2006-10-01";

Comment calculer le jour suivant ("2006-10-02")

Merci d'avance

Posté : 05 oct. 2006, 23:34
par graphistnet
Salut,

Tu peux par exemple découper ta chaîne en 3 morceaux et incrémenter la dernière partie de 1 pour avoir le jour suivant.
En utilisant split() par exemple pour le découpage.

Posté : 05 oct. 2006, 23:39
par zeus
il existe également la fonction strtotime()

tu peut l'utiliser comme suit :
$nouvelle_date = strtotime("+1 day", $ancienne_date);
Elle te permet de gerer automatiquement, les changements de mois et d'année

Posté : 05 oct. 2006, 23:44
par Photographiquement Vôtre
J'ai commencé à faire cela :

$date_depart= "2006-10-01";

$a_date = explode("-", $date_depart);
$annee = $a_date[0];
$mois = $a_date[1];
$jour = $a_date[2];

$jour=$jour + 1;

Cela marche mais je n'arrive pas à constituer la nouvelle date ("2006-10-02")

Posté : 05 oct. 2006, 23:51
par graphistnet
Tu as tous les éléments pour reformer ta date, il te suffit de reprendre $annee,$mois et $jour

Posté : 05 oct. 2006, 23:56
par Photographiquement Vôtre
Oui mais comment ????

Posté : 06 oct. 2006, 00:06
par graphistnet
Bon je vais être généreux vu l'heure :)
$date_depart= "2006-10-01";

$a_date = explode("-",$date_depart);
$annee = $a_date[0];
$mois = $a_date[1];
$jour = $a_date[2];

$jour=$jour + 1;

$date_arrivee = $annee."-".$mois."-".$jour;
echo "la date d'arrivée :".$date_arrivee;

Posté : 06 oct. 2006, 00:14
par Photographiquement Vôtre
Il me semblait l'avoir fait.

Tu as raison cela doit être l'heure, je vais me coucher.

Merci et bonne nuit

Posté : 06 oct. 2006, 00:33
par Truc
et si tu passes 2006-10-31 ?
elle donne quoi cette fonction ? :wink:

Tu devrais t'intéresser un peu plus à la proposition de zeus (si la date est dispo sous forme de timesamp).

Sinon reste aussi mktime() qui calcule également les changement de mois en ajoutant un jour au paramètre des jours.

Posté : 06 oct. 2006, 01:02
par graphistnet
Je suis entierement d'accord, les fonctions de traitement de date sont faites pour ce genre de chose. Je vais dire pour ma défense que d'avoir donner cette solution était un exemple pour montrer les limites, quoique c'est gérable mais autant ne pas réinventer la roue :p

Posté : 06 oct. 2006, 11:10
par Photographiquement Vôtre
Dans mon cas, je calcule le nombre de jours de chaque mois que j'intègre dans une boucle (de 1 à nb jours du mois)

Est ce bon dans ce cas là la méthode de Graphinet ?

Posté : 06 oct. 2006, 11:39
par graphistnet
Si tu te cantonnes à un mois bien précis en donnant une limite c'est jouable par contre s'il faut gêrer une periode plus longue je te conseille d'aller faire un tour sur les fonctions proposées par Zeus et Truc

Posté : 06 oct. 2006, 12:48
par zeus
Tout développeur ayant touché au date sais que c'est extremement compliqué de s'attaquer à réinventer la gestion des dates. Il y a les problèmes des mois ayant un nombre de jour différent, les années bissextiles, ...

De plus, PHP te propose une série de fonctions natives très pratiques. Alors, pourquoi t'embeter a recréer quelquechose qui sera, de toute façon, moins testé et éprouvé que les fonctions qui existe déjà ;)

Posté : 06 oct. 2006, 13:07
par Photographiquement Vôtre
Oui tu as raison, j'ai essayé avec mktime que j'ai déjà utilisé .

Mais j'un un petit souci car dans ma base, commandeO_timestamp est en format datetime et je compare avec un format date.

Y a t-il un tuto sur les conversion de format

Merci d'avance

Posté : 06 oct. 2006, 13:24
par Babeuf
Un bout de code dans le genre :

Code : Tout sélectionner

$date_depart= "2006-10-01"; //On découpe la date : $a_date = explode("-",$date_depart); $annee = $a_date[0]; $mois = $a_date[1]; $jour = $a_date[2]; et on reconstitue une date avec mktime qui corrige les erreurs éventuelles... echo date("Y-m-d", mktime(0, 0, 0, $mois, $jour + 1, $annee));
J'ai pas vu de problème particulier..
Ca pourrait pas coller ?