Odliczanie czasu w JavaScript

styczeń 25, 2007 – 7:42 po południu

Przedstawiam skrypt, który odlicza czas do określonej godziny. Skrypt powtarza codziennie tą samą czynność dla danego dnia.
Napisałem ten skrypt dla kolegi. Prosił mnie więc ma ;)
Może komuś innemu też się przyda.

function liczCzas()
{
  now = new Date();
  rok = now.getFullYear();
  miesiac = now.getMonth();
  dzien = now.getDate();
  to = new Date(rok,miesiac,dzien,12,0,0);
  ile = to.getTime() - now.getTime();
  godzin = Math.floor(ile / (1000 * 60 * 60));
  minut = Math.floor( ile / (1000 * 60)-godzin*60);
  sekund = Math.floor(ile / 1000 - godzin*60*60 - minut*60);
  if (godzin < 0)
  {
    to = new Date(rok,miesiac,dzien+1,12,0,0);
    ile = to.getTime() - now.getTime();
    godzin = Math.floor(ile / (1000 * 60 * 60));
    minut = Math.floor(ile / (1000 * 60)-godzin*60);
   sekund = Math.floor(ile / 1000 - godzin*60*60 - minut*60);
  }
  document.getElementById("time").innerHTML = "Pozostalo: "+godzin+" 
... godzin, "+minut+" minut, "+sekund+" sekund";
  }
var animeInt;
clearInterval(animeInt);
animeInt = setInterval("liczCzas()", 1000);

W body teraz trzeba jeszcze dodać:

<div id="time"></div>

Można by jeszcze poprawić, zoptymalizować, ale to pozostawię Wam.

  1. 10 Responses to “Odliczanie czasu w JavaScript”

  2. Moim zdaniem bardzo dobry sktypt troche przerobiłem i wykorzystalem na http://www…..pl

    By Landon on kwietnia 14, 2007

  3. Moja modyfikacja tego skryptu wygląda tak:

    function liczCzas() {
    now = new Date();
    rok = now.getFullYear();
    miesiac = now.getMonth();
    dzien = now.getDate();
    to = new Date(rok,miesiac,dzien,14,10,0);
    ile = to.getTime() - now.getTime();

    godzin = Math.floor(ile / (1000 * 60 * 60));
    minut = Math.floor(ile / (1000 * 60)-godzin*60);
    sekund = Math.floor(ile / 1000 - godzin*60*60 - minut*60);

    if (ile > 0) {
    document.getElementById(’time’).innerHTML = ‘Pozostalo: ‘+godzin+’ godzin, ‘+minut+’ minut, ‘+sekund+’ sekund’;
    } else {
    document.getElementById(’time’).innerHTML = ‘Zakończone’;
    }
    }
    var animeInt;
    clearInterval(animeInt);
    animeInt = setInterval(”liczCzas()”, 1000);

    By Landon on kwietnia 15, 2007

  4. Moim zdaniem to fajny pomysł też modyfikuje ten kod może zrobię coś lepszego

    By Darminl on lipca 10, 2007

  5. Dobra zrobiłem

    function liczCzas() {

    var element = document.getElementById(’time’);
    var stat = element.firstChild.nodeValue;

    var ile = stat-1;

    document.getElementById(’time’).innerHTML = ile;
    }
    var animeInt;
    clearInterval(animeInt);
    animeInt = setInterval(”liczCzas()”, 1000);

    ‘.$pozostalo.”;
    ?>

    By Darminl on lipca 11, 2007

  6. NIe ma edycji ale tak lepiej

    function liczCzas() {

    var element = document.getElementById(’time’);
    var stat = element.firstChild.nodeValue;

    var ile = stat-1;

    document.getElementById(’time’).innerHTML = ile;
    }
    var animeInt;
    clearInterval(animeInt);
    animeInt = setInterval(”liczCzas()”, 1000);

    <?
    echo ‘<div id=”time”>’.$pozostalo.’</div>’;
    ?>

    By Darminl on lipca 11, 2007

  7. @Darminl tylko że Twój skrypt jest mało podobny w zastosowaniu do mojego, bo odlicza tylko sekundy. Więc trzeba jeszcze dodatkowo godzine przeliczać na sekundy. Nie mówiąc już o tym że za każdym razem gdzy sie odświeży strone zacznie liczyć od początku, a nie do określonej godziny.

    By Jarek on lipca 11, 2007

  8. Dlaczego tak myślisz jeśli masz php i MySql na serwie to robisz tak.

    Do MySql dajesz pole, tabelę (rekord) z datą rozpoczęcia + czasem trwania puźneij wywołujesz przed tym

    $pozostalo = $baza['do']-date(”U”);

    No i odlicza myślę jak zrobić aby przeliczało na min i sekundy , godziny

    a i usuń te 2 komenty u góry

    <script>
    var ile =<?=$pozostało?>;
    function liczCzas() {

    ile–;

    var godzin = Math.floor(ile / (60 * 60));
    var minut = Math.floor((ile-godzin*60) / 60);
    var sekund = Math.floor(ile - godzin*60*60 - minut*60);

    if (ile > 0) {
    document.getElementById(’time’).innerHTML = ‘Pozostalo: ‘+godzin+’ godzin, ‘+minut+’ minut, ‘+sekund+’ sekund’;
    } else {
    document.getElementById(’time’).innerHTML = ‘Zakończone’;
    }
    }
    setInterval(”liczCzas()”, 1000);
    </script>

    By Lanodn on lipca 11, 2007

  9. Można i tak, ale mnie chodziło o zrobienie czego innego. Ty rozszerzyłeś zakres podzespołów torzebnych do zrobienia tego. Też może być ;)

    By Jarek on lipca 11, 2007

  10. Hmm no niby tak ale mocno zmodyfikowałem ten kod teraz nie podam go tutaj lecz będzie dostępny w grze ale pod nowym adresem [...]

    By Landon on listopada 6, 2007

  11. A mam takie pyt. (robię grę via i chciałem zrobić właśnie live clock [kategoria gry to strategia]) czas ile zostało aby budynek został zbudowany jest zapisany w bazie danych MySQL (jest zapisywany w sekundach).I tu jest problem gdzie podłożyć ten wynik, w jakim fragmencie?
    Za to: to.getTime()?

    By ulosok on lutego 25, 2009

Post a Comment