incrémenter une date

Répondre
yh
le 03/11/2009 à 19:16
yh
Bonjour,

Le but est de saisir une date de debut et et une date de fin, et ensuite je veux pouvoir inserer dans une table toutes les dates qu'il y'a entre date de debut et date de fin.

Est ce que quelqu'un a une idée de comment faire pour ajouter un jour à date de debut

Voila ce que j'ai déja fait mais je sais pas pourquoi des fois ca incrémente plus apres une date.

Formulaire

<input type="text" name="dated">
<input type="text" name="datef">

Code pour vérifier si la boucle d'incrémentaion marche:

<?php
if(isset($_POST['dated']))
{
$dated = $_POST['dated'];
$datef = $_POST['datef'];
$year_f = date('Y', $datef);
$month_f = date('m', $datef);
$day_f = date('d', $datef);
$day_f = $day_f + 1;
$date_fin= date($year_f.'-'.$month_f.'-'.$day_f);

$year_d = date('Y', $dated);
$month_d = date('m', $dated);
$day_d = date('d', $dated);
$date_debut= date($year_d.'-'.$month_d.'-'.$day_d);
//
$time_f = mktime(0,0,0,$month_f,$day_f,$year_f) ;
$time_d = mktime(0,0,0,$month_d,$day_d,$year_d) ;
$prix = $_POST['prix'];
$id=$_POST['id_etablissement'];
$nom_periode=$_POST['nom_p'];
$equation = floor((strtotime($datef) - strtotime($dated))/(60*60*24));
$date_jour = $dated;
$i=0;
$compt = 86400;
while($i<=$equation){

$year_d = substr($date_jour , 0 , 4);
$month_d = substr($date_jour , 5 , 2);
$day_d = substr($date_jour , 8 , 2);
echo $date_jour.'<br/>';
echo $year_d.'<br/>';
echo $month_d.'<br/>';
echo $day_d.'<br/>';
$seconde = mktime(0,0,0, $month_d , $day_d , $year_d);
$seconde = $seconde + $compt;

$date_jour = date('Y-m-d', $seconde);

$i = $i+1;
}

}
?>


Merci
LA GLOBULE
le 03/11/2009 à 19:55
LA GLOBULE
Cela ne marche pas parce que le postulat qui dit que l'on passe au jour suivant en ajoutant 60*60*24 secondes au timestamp actuel est faux (typiquement quand tu arrives sur un jour où il y'a un changement d'heure : il te manquera des secondes lorsque l'on ajoute une heure au temps).

Je te conseille d'utiliser la fonction strtotime pour calculer tous les jours entre deux dates (en faisant des +1 day).
date_add en SQL permet également de passer au jour suivant.
yh
le 04/11/2009 à 19:20
yh
Ca marche avec strtotime et + 1 day

un grand merci smiley
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours