LA DIFFÉRENCE ENTRE DEUX DATE EN PLUSIEURS FORMATS
biboux
Messages postés16Date d'inscriptionlundi 14 juin 2004StatutMembreDernière intervention 9 août 2010
-
7 avril 2010 à 18:03
neigedhiver
Messages postés2480Date d'inscriptionjeudi 30 novembre 2006StatutMembreDernière intervention14 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.
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és341Date d'inscriptionmercredi 17 juillet 2002StatutMembreDernière intervention14 juillet 201114 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és16Date d'inscriptionlundi 14 juin 2004StatutMembreDerniè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és10Date d'inscriptionvendredi 17 mars 2006StatutMembreDerniè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és16Date d'inscriptionlundi 14 juin 2004StatutMembreDerniè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)
9 avril 2010 à 20:46
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()
8 avril 2010 à 09:30
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.
7 avril 2010 à 22:52
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.
7 avril 2010 à 20:17
# //Vérifier si l'année est bissextiles
# if($month == '02'){
# if($year%4 == 0){
# $fev = '29';
# }else{
# $fev = '28';
# }
# }
Merci bien
7 avril 2010 à 18:03
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.