Se connecter / S'enregistrer
Votre question

Aide pour compteur

Tags :
  • Javascript
  • Programmation
Dernière réponse : dans Programmation
31 Mai 2008 21:23:17

A vrai dire je ne savais pas trop dans quelle catégorie poster ceci... J'espere que c'est la bonne.

J'explique :

Je suis actuellement sur un site de simulation politique, nous fonctionnons avec une unité de temps tel que 1mois réel = 6 mois fictifs.
Le problème c'est que nous avons énormément de mal pour nous reperer et déduire de la date a laquelle on se trouve en fictif.
Donc je voudrais savoir s'il n'y aurais pas un moyen de créer "un compteur" qui afficherais la date (et l'heure ?) Mais de sorte qu'elle s'écoule 6 fois plus vite que la réalité.
Ce compteur serais affiché en haut de notre forum.

Si quelqu'un peut me renseigner, merci beaucoup.

Autres pages sur : aide compteur

1 Juin 2008 13:28:02

Je pense que ceci devrait marcher (dans une page php):

Dans le head
  1. <SCRIPT LANGUAGE=JavaScript type="text/javascript">
  2.  
  3. ejs_server_date = new Date(0,0,0,<? echo date("H, i, s"); ?>)
  4. ejs_server_heu = ejs_server_date.getHours();
  5. ejs_server_min = ejs_server_date.getMinutes();
  6. ejs_server_sec = ejs_server_date.getSeconds();
  7.  
  8. function ejs_server_calc()
  9. {
  10. if (ejs_server_sec < 10)
  11. ejs_server_sec = "0"+Math.round(ejs_server_sec);
  12. else if(ejs_server_sec >= 60)
  13. {
  14. ejs_server_sec = "00";
  15. ejs_server_min++;
  16. }
  17. if (ejs_server_min < 10)
  18. ejs_server_min = "0"+Math.round(ejs_server_min);
  19. else if(ejs_server_min >= 60)
  20. {
  21. ejs_server_min = "00";
  22. ejs_server_heu++;
  23. }
  24. if (ejs_server_heu < 10)
  25. ejs_server_heu = "0"+Math.round(ejs_server_heu);
  26. else if(ejs_server_heu >= 24)
  27. {
  28. ejs_server_heu = "00";
  29. }
  30. ejs_server_texte = ejs_server_heu + ":" + ejs_server_min + ":" + ejs_server_sec;
  31. if (document.getElementById){
  32. document.getElementById("ejs_server_heure").innerHTML=ejs_server_texte;
  33. }
  34. ejs_server_sec++;
  35. }
  36. setInterval("ejs_server_calc()", 1000);
  37. </script>


Dans ta page :

  1. <div ID=ejs_server_heure></div>



Ceci va juste récupérer l'heure et la faire défiler, après pour l'accélérer je sais pas.

PS : J'ai pas testé ...
1 Juin 2008 17:33:44

Alors selon toi, avec ca o peut au moins afficher l'heure normale ?
C'est normal que dans la liste il n'y ait pas de 2. et de 7. ?
Je vais déja essayer.

Et quelqu'un saurais comment multiplier ça pour qu'elle défile par exemple 6fois plus vite ???


Merci.
Contenus similaires
1 Juin 2008 18:03:34

"C'est normal que dans la liste il n'y ait pas de 2. et de 7"


De quoi tu parles ?
1 Juin 2008 19:50:32

Dans le code que tu vient a donné, au début de chaque ligne il y a :

1.
3.
4.
5.
6.
8.
9.
....


Mais il n'y a pas le 2 et le 7 , je pose la question car j'ai trouvé ça byzarre.

Par contre ça c'est pour l'heure, mais ce quil me faudrais c'est la date, l'heure je m'en fou.
Est ce qu'il suffirais de remplacer "hours" "min" et "sec" par "year" "month" et "day" ?
1 Juin 2008 20:14:54

aaa, mais faut pas mettre les numéros
Faut juste mettre ça :

<SCRIPT LANGUAGE=JavaScript type="text/javascript">

ejs_server_date = new Date(0,0,0,<? echo date("H, i, s"); ?>)
ejs_server_heu = ejs_server_date.getHours();
ejs_server_min = ejs_server_date.getMinutes();
ejs_server_sec = ejs_server_date.getSeconds();

function ejs_server_calc()
{
if (ejs_server_sec < 10)
ejs_server_sec = "0"+Math.round(ejs_server_sec);
else if(ejs_server_sec >= 60)
{
ejs_server_sec = "00";
ejs_server_min++;
}
if (ejs_server_min < 10)
ejs_server_min = "0"+Math.round(ejs_server_min);
else if(ejs_server_min >= 60)
{
ejs_server_min = "00";
ejs_server_heu++;
}
if (ejs_server_heu < 10)
ejs_server_heu = "0"+Math.round(ejs_server_heu);
else if(ejs_server_heu >= 24)
{
ejs_server_heu = "00";
}
ejs_server_texte = ejs_server_heu + ":" + ejs_server_min + ":" + ejs_server_sec;
if (document.getElementById){
document.getElementById("ejs_server_heure").innerHTML=ejs_server_texte;
}
ejs_server_sec++;
}
setInterval("ejs_server_calc()", 1000);
</script>


et ça

<div ID=ejs_server_heure></div>


Les numéros servent à rien, c'est le forum qui les rajoute pour se repérer dans le programme.
1 Juin 2008 21:50:18

ok ok
Et alors si je veut la date au lieu de l'heure, je remplace juste heure, minute et seconde par année, mois et jours ?
Peut être que ce n'est pas aussi simple ... ?
1 Juin 2008 22:12:43

Juste la date ? dans ce cas fait juste ça en php :

<?php
echo date('D') . "/" . date('M') . "/" . date('Y');
?>

Pas besoin d'actualiser toutes les secondes pour afficher juste la date du jour.


EDIT : je viens d'avoir une idée pour faire défiler 6 fois plus vite, c'est pas très dur.

<?php
$date_en_seconde = (date("Y")-1) * 365.25 * 24 * 60 * 60 + (date("m")-1) * 30.44 * 24 * 60 * 60 + date("d") * 24 * 60 * 60 + date("h") * 60 * 60 + date("i") * 60 + date("s");

//inversion
$new_date = $date_en_seconde * 6;

while($new_date > (31536000-1))
{
$annee++;
$new_date = $new_date - 31536000;
}
while($new_date > (2592000-1))
{
$mois++;
$new_date = $new_date - 2592000;
}
while($new_date > (86400-1))
{
$jour++;
$new_date = $new_date - 86400;
}
while($new_date > (3600-1))
{
$heure++;
$new_date = $new_date - 3600;
}
while($new_date > (60-1))
{
$minute++;
$new_date = $new_date - 60;
}
$seconde = $new_date;
echo "Nouvelle date : $jour/$mois/$annee $heure h $minute : $seconde";

?>


Voila, tu peux changer le 6 de la ligne 5 pour changer la vitesse
1 Juin 2008 22:21:35

Ben propose, ça peut marcher.
1 Juin 2008 23:30:45

J'ai édité mon post.
Comme tu peux le voir j'ai été jusqu'aux secondes, mais il te suffit de virer ce que tu ne veux pas.
2 Juin 2008 17:01:06

Merci beaucoup, je vais voir ce que ça donne ;) 
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS