begin process at 2008 05 16 05:37:56
1 173 216 membres
58 nouveaux aujourd'hui
13 970 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

NOMBRE DE JOURS ENTRE DEUX DATE EN UNE SEULE LIGNE


Information sur la source

Catégorie :Date / Heure Niveau : Débutant Date de création : 23/10/2004 Vu : 19 368

Note :
9,14 / 10 - par 7 personnes
9,14 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (23)
Ajouter un commentaire et/ou une note

Description

Petit code tres pratique pour ne pas se trop se creuser ou faire 30 lignes quand on doit calculer le nombre de jours entre deux dates.

Source

  • $nbjours = round((strtotime($date1) - strtotime($date2))/(60*60*24)-1);
$nbjours = round((strtotime($date1) - strtotime($date2))/(60*60*24)-1);

Conclusion

Voila ;-) c'est simple comme tout, ca devrait ptet pas faire une source juste pour ca mais j'ai envie donc... lol
  • signaler à un administrateur
    Commentaire de webdusud le 26/10/2004 08:50:57

    les sources les plus simples sont les meilleurs !
    merci...

  • signaler à un administrateur
    Commentaire de fuckya le 03/11/2004 20:50:36

    hihi tu as finalement trouvé la source date idéale félicitation ^^

  • signaler à un administrateur
    Commentaire de akhenaton le 03/11/2004 21:22:42

    Bonsoir

    vraiment la source est tres pratique, j'ai juste une question : si je veut par exemple le nombre de jour entre deux dates dont le format est AAAA-MM-JJ doit je les convertir? est comment ?
    cordialement

  • signaler à un administrateur
    Commentaire de Magidev le 03/11/2004 21:29:45

    Le format AAAA-MM-JJ est un format de date dit Anglais, donc tu n'as pas besoin de le convertir

    Le manuel php dit ceci :
    ********************

    strtotime
    (PHP 3>= 3.0.12, PHP 4 , PHP 5)

    strtotime --  Transforme un texte anglais en timestamp
    Description
    int strtotime ( string time [, int now])


    strtotime() essaye de lire une date au format anglais dans la chaîne time, et de la transformer en timestamp UNIX, relativement au timestamp now, ou à la date courante si ce dernier est omis. En cas d'erreur, -1 est retourné.

    Comme strtotime() suit la syntaxe de date GNU, vous pouvez lire le manuel GNU intitulé Date Input Formats. Ci-dessous, vous trouverez une syntaxe valide pour le paramètre time.

    Exemple 1. Exemple avec strtotime()

    <?php
    // l'exemple n'est pas traduit, car cela ne fonctionne qu'en anglais
    echo strtotime ("now"), "\n";
    echo strtotime ("10 September 2000"), "\n";
    echo strtotime ("+1 day"), "\n";
    echo strtotime ("+1 week"), "\n";
    echo strtotime ("+1 week 2 days 4 hours 2 seconds"), "\n";
    echo strtotime ("next Thursday"), "\n";
    echo strtotime ("last Monday"), "\n";
    ?>  



    Exemple 2. Vérification des erreurs avec strtotime()

    $str = 'Pas une bonne date';
    if (($timestamp = strtotime($str)) === -1) {
        echo "La chaîne ($str) est bogus";
    } else {
        echo "$str == ". date('l dS of F Y h:i:s A',$timestamp);
    }  



    Note : L'intervalle de validité d'un timestamp va du Vendredi 13 Décembre 1901 20:45:54 GMT au Mardi 19 Jan 2038 03:14:07 GMT : cela correspond aux dates maximales et minimales pour un entier de 32 bits signé.

  • signaler à un administrateur
    Commentaire de platinum75 le 05/12/2004 08:27:56

    Source super, par contre il me semble qu'il y a une petite erreur. En fait le -1 à la fin semble fausser les résultats. Voilà ;-)

  • signaler à un administrateur
    Commentaire de xmag le 15/06/2005 16:36:11

    Salut,

    Et en une ligne, est ce que tu peux me dire comment calculer le nombre de lundi entre deux dates? (c'est pour calculer le nombre de semaines commençant par un lundi entre deux dates)...

    Merci ;-)

  • signaler à un administrateur
    Commentaire de xmag le 16/06/2005 08:29:03

    Bon en gros, j'ai trouvé ça :

    echo strftime("%W", $intDateFin) - strftime("%W", $intDateDebut);

    %W - numéro de semaine dans l'année, en considérant le premier lundi de l'année comme le premier jour de la première semaine.

    Ca me parait bien...

    ;-)

  • signaler à un administrateur
    Commentaire de Virus_T le 24/06/2005 09:42:28

    Joli, moi je voudrait faire une comparaison entre deux date ( en fait entre les mois de ces 2 dates). Pour etre plus clair, je veux qu'une reservation puisse se faire seulement et uniquement 30 jour a l avance ! donc je compare la date selctoinner et lza date systeme ; mais ca marche pas  si vous  pouvier m aider

    ------------------------------------------------------------------

    if ($start_month(mois selectionner)> date("m")+1
    {
    alert( <?php echo $voca['you_have_not_entered'] . '\n' . $vocab['valid_time_of_day'] ?>);
    return false;
    }
    ------------------------------------------------------------------
    Merci d avance

  • signaler à un administrateur
    Commentaire de zdm le 06/07/2005 08:50:47

    Cette methode est efficace car elle tient en une ligne, mais elle ne fonctionne pas pour tous les pays.
    Pour la France par exemple, elle ne prend en compte les changements d'heure (ete, hiver). Le calcul se basant sur le nombre de secondes (60*60*24 = 86400) dans une journee fausse le resultat.

    Encore une petite remarque sur le calcul du nombre de lundi, qui posera probleme lorsque le calcul sera a cheval sur 2 annees.

  • signaler à un administrateur
    Commentaire de zdm le 06/07/2005 16:27:18

    Je viens de tester la proposition de Magidev et cela fonctionne grace au round qui arrondi a la valeur superieure ou inferieure suivant la valeur du resultat.
    Si vous calculez le nombre de secondes en le 28/03/2005 - 0:0:0 et le 27/03/2005 - 0:0:0 vous obtiendrez 82800 et non 86400.
    Et 82800 = 86400 - 3600. C'est-a-dire 1 heure.

  • signaler à un administrateur
    Commentaire de redlist le 25/11/2005 14:22:28

    Bonjour, je me suis appuyé sur cette ligne pour calculer le nombre de jours entre aujourd'hui et une date future (avec une variante : afficher des mois, puis des jours) :

    $date1=date("Y-m-d"); // date du jour
    //$date1=20051231; // si on choisit de partir d'une date fixe AAAAMMJJ
    $date2=20080301; // date cible à renseigner
    $nbday = round((strtotime($date1) - strtotime($date2))/(60*60*24)-1); // nb jours
    if ($nbday < 45) {
    $nbmonth = round(($nbday)/7/4); // affiche les mois restant
    echo $nbmonth;
    }
    else {
    echo $nbday; // affiche les jours restant

  • signaler à un administrateur
    Commentaire de redlist le 25/11/2005 14:22:59

    Bonjour, je me suis appuyé sur cette ligne pour calculer le nombre de jours entre aujourd'hui et une date future (avec une variante : afficher des mois, puis des jours) :

    $date1=date("Y-m-d"); // date du jour
    //$date1=20051231; // si on choisit de partir d'une date fixe AAAAMMJJ
    $date2=20080301; // date cible à renseigner
    $nbday = round((strtotime($date1) - strtotime($date2))/(60*60*24)-1); // nb jours
    if ($nbday < 45) {
    $nbmonth = round(($nbday)/7/4); // affiche les mois restant
    echo $nbmonth;
    }
    else {
    echo $nbday; // affiche les jours restant

  • signaler à un administrateur
    Commentaire de gyome314 le 04/09/2006 13:38:50

    Simple, rapide, efficace, merci pour cette source !

  • signaler à un administrateur
    Commentaire de isatis39871 le 25/09/2006 15:22:05

    Plutôt qu'un round et un -1 qui fait un calcul d'arrondi puis une soustraction, une simple troncature suffis :

    $nbjours = floor((strtotime($date1) - strtotime($date2))/(60*60*24));

    Plus court, plus rapide et plus lisible... J'avoue qu'il y a des choses plus importantes à optimiser, mais c'était mes deux centimes ;-)

  • signaler à un administrateur
    Commentaire de pyobour le 24/04/2007 08:53:25

    Merciiii les gens pour ce code pratique il me raccourci grave mon code :D

  • signaler à un administrateur
    Commentaire de banquette le 11/05/2007 12:07:22

    Pour moi, les 2 sources donnent des résultats faux ; pour preuve ce code qui donne 0 alors qu'on attend 1 :
    <?php
    $date1 = "27 March 2005";
    $date2 = "28 March 2005";

    echo $nbjours = floor((strtotime($date2) - strtotime($date1))/(60*60*24));
    echo '<br />';
    echo $nbjours = round((strtotime($date2) - strtotime($date1))/(60*60*24)-1);
    ?>

    Il faut donc rajouter au moins 1 heure en secondes lors de la soustraction des 2 dates pour tomber dans le bon jour lors du changement d'heure en heure d'été :

    <?php
    $date1 = "27 March 2005";
    $date2 = "28 March 2005";

    echo $nbjours = floor((strtotime($date2) - strtotime($date1)+60*60*1)/(60*60*24));
    ?>

  • signaler à un administrateur
    Commentaire de destiny le 14/06/2007 04:54:57

    Bravo, c'est tout simplement excelent! j'ai gagné pas mal de ligne pour mon angenda ;)

  • signaler à un administrateur
    Commentaire de sonia5 le 22/06/2007 01:24:07

    Merci beaucoup pour ce gènial code

  • signaler à un administrateur
    Commentaire de dvlcerbere le 02/07/2007 15:04:55

    merci pour les posts sa m'a permis de beaucoup avancée maintenant il me reste une question est ce possible et comment reprendre le même systême
    mais cette fois pour avoir le nombre de secondes entre la date d'aujourd'hui et une date donnée.

    car je suis pas sur que se soit possible avec strtotime

    $date=date("H-i-s-j-M-Y");
    $date2=("15-05-30-04-07-2007");

    $nbsecondes = round((strtotime($date1) - strtotime($date2))/(60*60*24)-1);

    Je sais que mon code est faux, peut-on m'éclairer si possible ? Merci

  • signaler à un administrateur
    Commentaire de csiko le 16/07/2007 17:06:18

    code impeccable et très utile, merci. ça valait le coup de faire une source même court, je viens de gagner 1 ou 2 heures de boulot grâce à toi !

  • signaler à un administrateur
    Commentaire de osman_amine le 31/07/2007 13:38:14

    salut tout le monde.
    qq peut m'envoyer le code de difference de deux timestamp en java.

  • signaler à un administrateur
    Commentaire de devil1591 le 02/11/2007 16:52:13

    voici la bonne fonction qui gèrera les

    function nb_jours($debut, $fin)
    {
    $nb = 0;
    while ($debut != $fin) {
    $debut = date('Y-m-d', strtotime($debut.' +1 day'));
    $nb++;
    }
    return $nb;
    }

    echo nb_jours('2007-10-28', '2007-11-03');

    echo $nb_jours;

  • signaler à un administrateur
    Commentaire de devil1591 le 23/11/2007 14:38:38

    Qui gèrera les....décalages d'heure d'hiver/été !
    A+

Ajouter un commentaire

Appels d'offres

Pub



CalendriCode

Mai 2008
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Boutique

Boutique de goodies CodeS-SourceS