AFFICHAGE DU DÉCOMPTE D'UNE DATE PAR RAPPORT AVEC LA DATE ACTUELLE

malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 - 3 mars 2006 à 10:16
cs_yassinovic10 Messages postés 1 Date d'inscription mercredi 23 août 2006 Statut Membre Dernière intervention 24 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.

https://codes-sources.commentcamarche.net/source/36351-affichage-du-decompte-d-une-date-par-rapport-avec-la-date-actuelle

cs_yassinovic10 Messages postés 1 Date d'inscription mercredi 23 août 2006 Statut Membre Dernière intervention 24 août 2006
24 août 2006 à 22:30
ca marche plu
GREGPUNK Messages postés 12 Date d'inscription mercredi 9 avril 2003 Statut Membre Derniè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és 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
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és 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
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és 31 Date d'inscription vendredi 18 février 2005 Statut Membre Dernière intervention 25 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és 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
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és 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
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és 31 Date d'inscription vendredi 18 février 2005 Statut Membre Dernière intervention 25 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és 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
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és 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
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");
Rejoignez-nous