LA DIFFÉRENCE ENTRE DEUX DATE EN PLUSIEURS FORMATS

biboux Messages postés 16 Date d'inscription lundi 14 juin 2004 Statut Membre Dernière intervention 9 août 2010 - 7 avril 2010 à 18:03
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 - 9 avril 2010 à 20:46
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/51562-la-difference-entre-deux-date-en-plusieurs-formats

neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
9 avril 2010 à 20:46
Salut,

Juste pour dire que la différence de temps entre deux dates est implémentée en natif depuis PHP 5.2.0
http://fr2.php.net/manual/fr/datetime.diff.php

Evidemment, comme cette implémentation est en objet, elle est beaucoup plus souple d'utilisation et permet donc de personnaliser l'affichage comme on l'entend, grâce à la méthode DateInterval::format : http://fr2.php.net/manual/fr/dateinterval.format.php
De même, pour le format en entrée, on peut utiliser n'importe quelle chaîne de caractères reconnue par strtotime()
cs_jeca Messages postés 341 Date d'inscription mercredi 17 juillet 2002 Statut Membre Dernière intervention 14 juillet 2011 14
8 avril 2010 à 09:30
Bonjour,

J'aimerais comprendre la finalité de ce code car, si je l'exécute tel qu'il est, celui-ci m'affiche :
De 01/03/2008 à 01/03/2009
ce que je sais déjà puisque ce sont les dates qui sont données en début de code.

Sinon, pour les années bissextiles, pas besoin de chercher midi à quatorze heure, la fonction "date()" sait le faire :
date('L', 'la date') retourne 1 si bissextile sinon 0.
biboux Messages postés 16 Date d'inscription lundi 14 juin 2004 Statut Membre Dernière intervention 9 août 2010
7 avril 2010 à 22:52
justement, le calcul que tu fais dans cette fonction est faux, ou plutôt incomplet. En effet, savoir si février à 29 jours ne se résume pas à vérifier la division par 4. Il faut également que l'année ne soit pas divisible par 100 ou alors qu'elle le soit par 400.

Ma 2ème question/proposition concernait également ta fonction get_month. Je proposais de la remplacer par l'appel à date("t",mktime(0, 0, 0, $mois, 1, $année)), sous réserve que cette fonction native gère correctement les années bissextiles. Si ce n'est pas le cas, ta fonction (une fois corrigée) fera très bien l'affaire.
nasro81 Messages postés 10 Date d'inscription vendredi 17 mars 2006 Statut Membre Dernière intervention 7 avril 2010
7 avril 2010 à 20:17
Je sais pas si t'as bien vu la fonction get_month($year, $month) dont la quelle je fais un test sur le mois de février
# //Vérifier si l'année est bissextiles
# if($month == '02'){
# if($year%4 == 0){
# $fev = '29';
# }else{
# $fev = '28';
# }
# }

Merci bien
biboux Messages postés 16 Date d'inscription lundi 14 juin 2004 Statut Membre Dernière intervention 9 août 2010
7 avril 2010 à 18:03
salut,

je voudrais te signaler une erreur dans ton calcul du nombre de jours dans un mois : février aura 29 jours si l'année est divisible par 4 et non par 100 ou si l'année est divisible par 400 (par exemple 2000 l'était mais pas 1900)
De plus, ne peut-on pas utiliser ceci : date("t",mktime(0, 0, 0, $mois, 1, $année)) ? (je sais pas si ça gère comme il faut les années bissextiles)

En tout cas, merci pour ta source.
Rejoignez-nous