AFFICHAGE DU DÉCOMPTE D'UNE DATE PAR RAPPORT AVEC LA DATE ACTUELLE
malik7934
Messages postés1154Date d'inscriptionmardi 9 septembre 2003StatutMembreDernière intervention15 août 2009
-
3 mars 2006 à 10:16
cs_yassinovic10
Messages postés1Date d'inscriptionmercredi 23 août 2006StatutMembreDernière intervention24 août 2006
-
24 août 2006 à 22:30
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
cs_yassinovic10
Messages postés1Date d'inscriptionmercredi 23 août 2006StatutMembreDernière intervention24 août 2006 24 août 2006 à 22:30
ca marche plu
GREGPUNK
Messages postés12Date d'inscriptionmercredi 9 avril 2003StatutMembreDernière intervention 6 mars 2006 6 mars 2006 à 12:18
Heuuu
pour ceux qui sont pas content, c'est vraiment un tout petit script qui permet de faire un décompte très simple
c'est sur que c'est pas au millième pret ( a la rigeur sur vos sites tout le monde s'en fou combien de secnde ca se fait)
vu que je l'utilise pour indiquer il y a combien de temps qu'un utilisateur a posté un commentaire pour chaque article !
ya pas besoin d'etre ultra précis !
sinon j'aurai utilisé des calcul de fou avec géolocalisation de la personne et avec décalage horaire en fonction de sa position et heures été et heures d'hivers ! ;-)
FhX
Messages postés2350Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention18 avril 20153 4 mars 2006 à 19:29
"désolé d'insister si je me trompe, mais le calcul de la différence des dates donne une "durée"."
Bah voui... mktime() renvoit bien un timestamp UNIX... Soit une durée depuis le 1er Janvier 1979 (ou 71... je sais plus.)
Après, tu utilises date() pour avoir la date actuelle par rapport à ta durée et puis voila.
Y'a rien de dur. :p
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 4 mars 2006 à 18:52
et bien avec ça, tu prend des timestamp unix, tu les soustrait, tu as ta durée, et ensuite, tu le passe comme argument à date comme tu l'as fait... mais on le fait avec des timestamp unix...
Mon code est peu lisible car non commenté, mais bon, voilà quoi, c'est pas vraiment mon code, c'est une amélioration du tien (qui n'a en rapport avec le tien que la fonctionnalité, je l'admet... mais j'ai jamais eu envi de faire ça, alors je te montre comment le faire, mais pour les commentaires, tu te débrouille tout seul !)
bubuze
Messages postés31Date d'inscriptionvendredi 18 février 2005StatutMembreDernière intervention25 avril 2006 4 mars 2006 à 18:47
merci pour vos réponses, et bien joué coucou pour ton code ! (bien qu'il soit moins lisible que le premier)
désolé d'insister si je me trompe, mais le calcul de la différence des dates donne une "durée".
pour savoir le nombre de jour/mois/année contenus dans cette durée il faut avoir une référence :
une durée de 30 jours peut correspondre à plusieurs résultats, selon la date de référence sur laquelle on se base...
(en se méfiant également du sens de la soustraction)
ex : durée = 30 jours a plusieurs solutions ?
0mois30jours ou 1mois2jours ou 1mois1jour ou encore 1mois0jour.
comment il se dépatouille avec ça le php ?
ok je sors... la comparaison a lieu avec la date actuelle.
si je veux résoudre le problème que j'exposais, y-a-il une solution (à part modifier la date système ?)
FhX
Messages postés2350Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention18 avril 20153 4 mars 2006 à 14:06
"(mais je sais pas comment php gère les années bissextiles, les jours par mois etc...)"
Mktime() s'en charge tout seul au passage :)
"et on pourrait encore chipoter avec le décalage de quelques secondes qui a été réalisé récemment pour recaler le temps officiel avec la rotation de la terre :-)"
Tout est géré coté serveur, t'as pas à t'en faire pour ca.
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 4 mars 2006 à 12:32
# if($seconde<60)
# $date_affichage=date("s",$seconde)." secondes";
# elseif($seconde<3600)
# $date_affichage=date("i",$seconde)."min et ".date("i",$seconde)."s";
# elseif($seconde<86400)
# $date_affichage=date("H",$seconde)."h, ".date("i",$seconde)."min et ".date("s",$seconde)."sec";
# elseif($seconde<2678400)
# $date_affichage=date("d",$seconde)."j, ".date("H",$seconde)."h, ".date("i",$seconde)."min et ".date("s",$seconde)."sec";
# else
# $date_affichage=date("m",$seconde)." mois, ".date("d",$seconde)."j, ".date("H",$seconde)."h, ".date("i",$seconde)."min et ".date("s",$seconde)."sec";
mettons que je sois un gros New et que je ne sache pas comment simplifier les nombres devant... Je peux déja simplifier l'expression de la date
<?php
echo date('m\\m\\o\\i\\s d\\j, H\\h, i\\m\\i\\n \\e\\t s\\s\\e\\c');
?>
ça m'a permi de faire un petit test...
Bon, ensuite, une petite boucle...
<?php
$a=array(
60=>'s\\s\\e\\c\\o\\n\\d\\e\\s',
3600=>'i\\m\\i\\n \\e\\t i \\s\\e\\c',
86400=>'H\\h, i\\m\\i\\n \\e\\t i \\s\\e\\c',
2678400=>'d\\j, H\\h, i\\m\\i\\n \\e\\t i \\s\\e\\c'
)
$date_affichage='m \\m\\o\\i\\s, d\\j, H\\h, i\\m\\i\\n \\e\\t i \\s\\e\\c';
while (list($b, $c)=each($a)){
if ($seconde<$b){
$date_affichage=$c;
break;
}
}
$date_affichage=date($date_affichage);
?>
et hop, c'est pas mieux comme ça ??? et si j'ai pas envi de répéter tout dans le tableau du haut alors : je peut très bien modifier légèrement le format de façon à n'avoir qu'a faire des .=
bubuze
Messages postés31Date d'inscriptionvendredi 18 février 2005StatutMembreDernière intervention25 avril 2006 4 mars 2006 à 11:22
quitte à me faire newbiser, tu la ferais comment la boucle 747 ?
ça me paraît propre et simple comme code
(mais je sais pas comment php gère les années bissextiles, les jours par mois etc...)
du coup le décompte risque d'être faux s'il n'est pas basé par rapport au temps présent...
ex : si on est le 1er mars, et que la différence est de 28,5 jours, comment il s'en sort ?
et on pourrait encore chipoter avec le décalage de quelques secondes qui a été réalisé récemment pour recaler le temps officiel avec la rotation de la terre :-)
a+
(tout ça pour ceux qui voudraient un truc carré, répondez à ces questions avant de vous en servir)
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 3 mars 2006 à 11:05
else if, else if, else if... t'en as pas eu marre ? à ta place, j'aurais fait une boucle... Bon, sinon, remplace tout tes " par des ', aparement t'a confondu leurs deux effets....
malik7934
Messages postés1154Date d'inscriptionmardi 9 septembre 2003StatutMembreDernière intervention15 août 200917 3 mars 2006 à 10:16
J'ai testé et ça ne fonctionne pas toujours... pourquoi?: tu fais quoi si ton $seconde>32140800?!?
Pour info:
$seconde=date("U",mktime($s_heure,$s_minute,$s_seconde,$s_mois,$s_jour,$s_annee))-date("U",mktime(date("H"),date("i"),date("s"),date("m"),date("d"),date("Y")));
c'est pareil à:
$seconde=date("U",mktime($s_heure,$s_minute,$s_seconde,$s_mois,$s_jour,$s_annee))-date("U");
24 août 2006 à 22:30
6 mars 2006 à 12:18
pour ceux qui sont pas content, c'est vraiment un tout petit script qui permet de faire un décompte très simple
c'est sur que c'est pas au millième pret ( a la rigeur sur vos sites tout le monde s'en fou combien de secnde ca se fait)
vu que je l'utilise pour indiquer il y a combien de temps qu'un utilisateur a posté un commentaire pour chaque article !
ya pas besoin d'etre ultra précis !
sinon j'aurai utilisé des calcul de fou avec géolocalisation de la personne et avec décalage horaire en fonction de sa position et heures été et heures d'hivers ! ;-)
4 mars 2006 à 19:29
Bah voui... mktime() renvoit bien un timestamp UNIX... Soit une durée depuis le 1er Janvier 1979 (ou 71... je sais plus.)
Après, tu utilises date() pour avoir la date actuelle par rapport à ta durée et puis voila.
Y'a rien de dur. :p
4 mars 2006 à 18:52
Mon code est peu lisible car non commenté, mais bon, voilà quoi, c'est pas vraiment mon code, c'est une amélioration du tien (qui n'a en rapport avec le tien que la fonctionnalité, je l'admet... mais j'ai jamais eu envi de faire ça, alors je te montre comment le faire, mais pour les commentaires, tu te débrouille tout seul !)
4 mars 2006 à 18:47
désolé d'insister si je me trompe, mais le calcul de la différence des dates donne une "durée".
pour savoir le nombre de jour/mois/année contenus dans cette durée il faut avoir une référence :
une durée de 30 jours peut correspondre à plusieurs résultats, selon la date de référence sur laquelle on se base...
(en se méfiant également du sens de la soustraction)
ex : durée = 30 jours a plusieurs solutions ?
0mois30jours ou 1mois2jours ou 1mois1jour ou encore 1mois0jour.
comment il se dépatouille avec ça le php ?
ok je sors... la comparaison a lieu avec la date actuelle.
si je veux résoudre le problème que j'exposais, y-a-il une solution (à part modifier la date système ?)
4 mars 2006 à 14:06
Mktime() s'en charge tout seul au passage :)
"et on pourrait encore chipoter avec le décalage de quelques secondes qui a été réalisé récemment pour recaler le temps officiel avec la rotation de la terre :-)"
Tout est géré coté serveur, t'as pas à t'en faire pour ca.
4 mars 2006 à 12:32
# $date_affichage=date("s",$seconde)." secondes";
# elseif($seconde<3600)
# $date_affichage=date("i",$seconde)."min et ".date("i",$seconde)."s";
# elseif($seconde<86400)
# $date_affichage=date("H",$seconde)."h, ".date("i",$seconde)."min et ".date("s",$seconde)."sec";
# elseif($seconde<2678400)
# $date_affichage=date("d",$seconde)."j, ".date("H",$seconde)."h, ".date("i",$seconde)."min et ".date("s",$seconde)."sec";
# else
# $date_affichage=date("m",$seconde)." mois, ".date("d",$seconde)."j, ".date("H",$seconde)."h, ".date("i",$seconde)."min et ".date("s",$seconde)."sec";
mettons que je sois un gros New et que je ne sache pas comment simplifier les nombres devant... Je peux déja simplifier l'expression de la date
<?php
echo date('m\\m\\o\\i\\s d\\j, H\\h, i\\m\\i\\n \\e\\t s\\s\\e\\c');
?>
ça m'a permi de faire un petit test...
Bon, ensuite, une petite boucle...
<?php
$a=array(
60=>'s\\s\\e\\c\\o\\n\\d\\e\\s',
3600=>'i\\m\\i\\n \\e\\t i \\s\\e\\c',
86400=>'H\\h, i\\m\\i\\n \\e\\t i \\s\\e\\c',
2678400=>'d\\j, H\\h, i\\m\\i\\n \\e\\t i \\s\\e\\c'
)
$date_affichage='m \\m\\o\\i\\s, d\\j, H\\h, i\\m\\i\\n \\e\\t i \\s\\e\\c';
while (list($b, $c)=each($a)){
if ($seconde<$b){
$date_affichage=$c;
break;
}
}
$date_affichage=date($date_affichage);
?>
et hop, c'est pas mieux comme ça ??? et si j'ai pas envi de répéter tout dans le tableau du haut alors : je peut très bien modifier légèrement le format de façon à n'avoir qu'a faire des .=
4 mars 2006 à 11:22
ça me paraît propre et simple comme code
(mais je sais pas comment php gère les années bissextiles, les jours par mois etc...)
du coup le décompte risque d'être faux s'il n'est pas basé par rapport au temps présent...
ex : si on est le 1er mars, et que la différence est de 28,5 jours, comment il s'en sort ?
et on pourrait encore chipoter avec le décalage de quelques secondes qui a été réalisé récemment pour recaler le temps officiel avec la rotation de la terre :-)
a+
(tout ça pour ceux qui voudraient un truc carré, répondez à ces questions avant de vous en servir)
3 mars 2006 à 11:05
3 mars 2006 à 10:16
Pour info:
$seconde=date("U",mktime($s_heure,$s_minute,$s_seconde,$s_mois,$s_jour,$s_annee))-date("U",mktime(date("H"),date("i"),date("s"),date("m"),date("d"),date("Y")));
c'est pareil à:
$seconde=date("U",mktime($s_heure,$s_minute,$s_seconde,$s_mois,$s_jour,$s_annee))-date("U");