begin process at 2012 05 27 19:54:35
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Date / Heure

 > DIFFÉRENCE ENTRE DEUX DATE EN JOURS (LISTE RÉCUPÉRÉE DANS UN TABLEAU)

DIFFÉRENCE ENTRE DEUX DATE EN JOURS (LISTE RÉCUPÉRÉE DANS UN TABLEAU)


 Information sur la source

Note :
Aucune note
Catégorie :Date / Heure Classé sous :date, jours, liste, table Niveau :Débutant Date de création :17/02/2010 Date de mise à jour :17/02/2010 23:16:32 Vu :3 879

Auteur : DevilTN

Ecrire un message privé
Commentaire sur cette source (10)
Ajouter un commentaire et/ou une note

 Description


Salut
J'ai cherché une fonction permettant de récupérer une liste de date entre deux dates données.
En ne trouvant rien, j’ai décidé le faire moi même en plus c'est pas très compliqué à faire.


Source

  • <?php
  • function liste_jours($date_debut, $date_fin) {
  • $date_suite = array();
  • list($jour1, $mois1, $annee1) = explode("-", $date_debut);
  • list($jour2, $mois2, $annee2) = explode("-", $date_fin);
  • $date1 = mktime(0,0,0,$mois1,$jour1,$annee1);
  • $date2 = mktime(0,0,0,$mois2,$jour2,$annee2);
  • $nombre_jours = (int) (($date2-$date1)/86400);
  • for($i = 0; $i < $nombre_jours; $i++){
  • $date_suite[$i] = date('Y-m-d', strtotime("+$i day ".$date_debut));
  • }
  • return $date_suite;
  • }
  • $Liste_Date=liste_jours('01-12-2010','15-12-2010');
  • for($i = 0; $i < count($Liste_Date); $i++)
  • echo $Liste_Date[$i]."<BR/>";
  • ?>
<?php

function liste_jours($date_debut, $date_fin) {
    $date_suite = array();
	list($jour1, $mois1, $annee1) = explode("-", $date_debut);
	list($jour2, $mois2, $annee2) = explode("-", $date_fin);
	
	$date1 = mktime(0,0,0,$mois1,$jour1,$annee1); 
	$date2 = mktime(0,0,0,$mois2,$jour2,$annee2); 

	$nombre_jours = (int) (($date2-$date1)/86400);

	
	for($i = 0; $i < $nombre_jours; $i++){
		$date_suite[$i] = date('Y-m-d', strtotime("+$i day ".$date_debut));
	}
	return $date_suite;

}
$Liste_Date=liste_jours('01-12-2010','15-12-2010');
for($i = 0; $i < count($Liste_Date); $i++)
	echo $Liste_Date[$i]."<BR/>";
?>

 Conclusion

amusez vous !


 Sources du même auteur

Source avec Zip Source avec une capture ZIP TO WEB (ZIP2WEB)

 Sources de la même categorie

Source avec une capture AGENDA GRAPHIQUE SIMPLE (DÉBUTANT) À INTÉGRER par NicomakM
CALCUL DU NOMBRE DE JOURS CONTENUS DANS L'INTERSECTION DE DE... par curphey
CALENDRIER EN 70 LIGNES par tchconst
Source avec Zip CALENDRIER par gabay
CALENDRIER SIMPLE par manuche

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture CALENDRIER + AGENDA TRÈS SIMPLE (GERER LES JOURS FÉRIÉS ET L... par mondherclubiste
CALCUL SIMPLE DU NOMBRE DE JOURS OUVRÉS ENTRE DEUX DATES (JO... par Astemius
NOMBRE DE JOURS ENTRE DEUX TIMESTAMP par parraccourci
UNE LISTE DÉROULANTE AVEC LES DATES. par ffwrude
JOURS OUVRES par malalam

Commentaires et avis

Commentaire de Waredan le 17/02/2010 16:25:06

Salut, voici le même avec prise en charge du timezone et du format d'affichage souhaité, PHP 5 >= 5.2.0 requis.

<?php
date_default_timezone_set('Europe/Paris');

function liste_jours($deb, $fin = 'now') {
$dt   = date_create($deb);
$diff = $dt->diff(date_create($fin));

$arr = array();

for ($i = 0; $i < $diff->d; $i++)
$arr[] = clone $dt->modify('+' . $i . ' day');

return $arr;
}

foreach (liste_jours('01-12-2010', '15-12-2010') as $dt)
echo $dt->format('d/m/Y') . PHP_EOL;
?>

Commentaire de DevilTN le 17/02/2010 16:50:16

Concernant la prise en charge du TimeZone
J'utilise souvent cette fonction :

function Convert_time_to_US($DateCH)
{
$dateTime=date_create($DateCH,timezone_open('Europe/Zurich'));
$DateTimeZone=timezone_open('America/Los_Angeles');
date_timezone_set($dateTime,$DateTimeZone);
return(date_format($dateTime,"Y-m-d H:i:s"));
}

Tu peux simplement la modifier :)

Commentaire de nashouille le 19/02/2010 12:03:13

salut

Comment fait-on avec les extractions de date MySQL au format yyyy-mm-dd ?

merci

Commentaire de Waredan le 19/02/2010 12:13:49

C'est pas trop le sujet qui est en question ici ...

<?php
// Dans ta base de donnée, tu as un champ nommé "date", de type "datetime".
// Supposant que "$date" provient de ce champ...
$date = '2010-02-16 11:40:00';
$date = date_create($date);
echo $date->format('Y-m-d');
?>

Commentaire de nashouille le 19/02/2010 12:39:51

je viens de testé ta fonction directement avec une extraction MySQL.
Le champs que je test est de type date et non datetime comme tu le précise.

et voici ce qui en ressort avec ce test:
$Liste_Date=liste_jours('2010-12-01','2010-12-15');
for($i = 0; $i < count($Liste_Date); $i++)
echo $Liste_Date[$i]."<BR/>";

une boucle du 2010-12-01 au 2024-11-30

merci

Commentaire de Waredan le 19/02/2010 12:59:12

Tu as lu les commentaires précédents ? Si tu veux utiliser un format différent, je te conseille de reprendre ma fonction donnée en commentaire #1 .. remplace "d/m/Y" par "Y-d-d" ..

Commentaire de Waredan le 19/02/2010 12:59:59

Y-m-d, cela va de soi ..

Commentaire de nashouille le 19/02/2010 17:26:15

Pour prendre les dates dans les deux format

<?php
date_default_timezone_set('Europe/Paris');

function liste_jours($date_debut, $date_fin) {

$date_suite = array($date_debut, $date_fin);

foreach($date_suite as $key => $value){

if(!($date = date_create($value)))
return false;

list($annee, $mois, $jour) = explode("-", date_format($date,'Y-m-d'));
$date_suite[$key] = mktime(0,0,0, $mois, $jour, $annee);
}

$nbrJours = (int)(($date_suite[1]-$date_suite[0])/86400);

for($i = 0; $i <= $nbrJours; $i++)
$date_suite[$i] = date('Y-m-d', strtotime("+$i day ".$date_debut));


return $date_suite;
}
?>

Commentaire de questre78 le 22/02/2010 10:11:40

salut moi j'utilise cette fonction (une période sur deux ans ou un an  )
function generate_Period($planification=array('year1'=>'', 'month1'=>'', 'day1'=>'', 'year2'=>'', 'month2'=>'','day2'=>'','day_of_cours'=>''))
    {
              
                $annee          =$planification['year1'];
                $premiermois    =$planification['month1'];
                $premierjour    =$planification['day1'];
                $anneeF         =$planification['year2'];
                $derniermois    =$planification['month2'];
                $deuxiemejour   =$planification['day2'];
                $day            =$planification['day_of_cours'];

                $planification="planification";
                if (!isset ($derniermois)){$derniermois=12;}
                if (!isset ($premiermois)){$premiermois=1;}
                $day_in_french=array('Sun'=>'Dim', 'Mon'=>'Lun', 'Tue'=>'Mar', 'Wed'=>'Mer', 'Thu'=>'Jeu', 'Fri'=>'Ven', 'Sat'=>'Sam');


                print " <tr>  \n";
                $k=0;
                if ($annee==$anneeF && $premiermois<=$derniermois)
                {
                    if ($premiermois==$derniermois && $premierjour>$deuxiemejour)
                    {
                        return "erreur";
                    }
                    $moisfinannee=$derniermois;
                }
                else
                {
                    $moisfinannee=12;
                }
                for($indexmois=$premiermois;$indexmois<=$moisfinannee;$indexmois++)
                {
                    $nbrJourduMois[$annee][$indexmois]=Date("t", mktime(0, 0, 0, $indexmois,1, $annee));
                    $month=Date("m", mktime(0, 0, 0, $indexmois,1, $annee));

                     for($indexjour=$premierjour;$indexjour<$nbrJourduMois[$annee][$indexmois];$indexjour++)
                     {
                     //(Date("w", mktime(0, 0, 0, $indexmois,$indexjour, $annee))==$day) ?$k++:print"";
                          if (Date("w", mktime(0, 0, 0, $indexmois,$indexjour, $annee))==$day)
                          {
                             $k++;
                             print  '<td><input type="checkbox" checked="checked" name="'.$planification.'[]" value="'.date("d/m/Y", mktime(0, 0, 0, $month,$indexjour, $annee)).'" />'.$day_in_french[date("D", mktime(0, 0, 0, $month,$indexjour, $annee))]."    ".date("d/m/Y", mktime(0, 0, 0, $month,$indexjour, $annee))."</td>\n";
                             if ($k%4==0)
                             {
                                 print "</tr><tr>\n";
                             }
                         }

                     }
                }


                if ($anneeF>$annee)
                {

                     for($indexmois1=1;$indexmois1<=$derniermois;$indexmois1++)
                     {
                       $nbrJourduMois[$anneeF][$indexmois1]=Date("t", mktime(0, 0, 0, $indexmois1,1, $anneeF));
                       $month=Date("m", mktime(0, 0, 0, $indexmois1,1, $anneeF));
                       for($indexjour1=1;$indexjour1<$nbrJourduMois[$anneeF][$indexmois1];$indexjour1++)
                      {
                         if (Date("w", mktime(0, 0, 0, $indexmois1,$indexjour1, $anneeF))==$day)
                         {
                             $k++;

                             print  '<td><input type="checkbox" checked="checked" name="'.$planification.'[]" value="'.date(" d/m/Y", mktime(0, 0, 0, $month,$indexjour1, $anneeF)).'" />'.$day_in_french[date("D", mktime(0, 0, 0, $month,$indexjour1, $anneeF))]."    ".date("d/m/Y", mktime(0, 0, 0, $month,$indexjour1, $anneeF))."</td>\n";
                            if ($k%4==0)
                            {
                            print "</tr><tr>\n";
                            }
                        }

                     }
                    }
                }
                print " </tr>";
        }

Commentaire de perruche1 le 28/09/2010 07:57:59

Bonjour,
Etant plus (ou moins) que nul en programmation php, je voudrai avoir un formulaire sur mon site ou une personne rentre une date (ou, à défaut qui affiche la date actuelle), et qui calcule et montre automatiquement cette date + 18 jours. Je comprends que cela vous semble un peu bizarre ; c'est simplement dans le cadre d'élevage d'oiseaux, pour prédire la date d'éclosion en fonction de la date de ponte d'un oeuf...

Un grand merci d'avance pour celui ou ceux qui veulent m'aider

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

prob avec des listes deroulantes [ par toto99 ] voila mon prob est le suivante:-------------------------------------------j'ai une premiere liste deroulante qui ce remplit directement par raport a m boucle [ par toto99 ] voila je recupe des dates dans une liste deroulante suvant un choix qui ce trouve dans une autre liste deroulante, tous les deux sont alimenter par un Date et zone de liste [ par Joez ] Bonjour voila j'ai 3 listes déroulantes- 1 avec les jours ( 1 2 3 4 .... 31)- 1 avec les mois ( Janvier ..... decembre )- 1 avec les années ( 2002, 20 Datetime et MySQL [ par DarkSchneider ] Bonjour, Encore un problème, un de plus.Cette fois-ci, c'est les dates.Dans ma base MySQL, j'ai crée une table avec divers champs, dont un se nomm Liste déroulante MAJ???? [ par rich25200 ] Bonjour,J'ai une liste déroulante alimenter par une table prenons par exemple la table famille ou dans ma liste il y a tout les noms de famille..Je ve question sur les formulaires et bd de debutant [ par herveguedj ] Voila je debute en php et j'ai dans un formulaire membre une table membre et une table region le formulaire contient une zone liste qui liste toutes l copy champ date null [ par nadou77 ] Bonjour,J'utilise la commande copy pour telecharger dans ma base de donnée un fichier mais ma table contient de champs date et postgres affiche un mes date dans un tableau [ par titigrou ] kikou!!!j'ai une liste déroulante semaine créée a partir des données de la baseet j'ai un tableau avec les joursje voudrais savoir comment on fait, un Liste déroulante en php [ par iomega ] Bonjour à tous!!!J'ai une liste déroulant ou je séléctionne une dateavec un form action et lorsque je sélectionne cette date le problème c'est que cel requete SQL qui fait pas son travail [ par florianb ] Bonjour je me heurte a un probleme de requete sql, soit elle fait mal son travail soit c'est mloi qui est mauvais :)! j'ai une table appartement et un


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,406 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales