[JS] odliczanie czasu

0

napisałem skrypt, który odlicza czas do otwarcia lokalu lub do jego zamknięcia... nie wiem dlaczego w firefox wszsytko wyświetla się poprawnie, a w ie piszę że błąd na stronie i skrypt zupełnie nie działa, a licznik zamiast np. 2h 34min 10s, pokazuje czas tak 16655042h 34min 10s

function time()
{
	var nazwy_tyg = ['NIEDZIELA','PONIEDZIAŁEK','WTOREK','ŚRODA','CZWARTEK','PIĄTEK','SOBOTA'];
	var nazwy_mies = ['Styczeń','Luty','Marzec','Kwiecień','Maj','Czerwiec','Lipiec','Sierpień','Wrzesień','Październik','Listopad','Grudzień'];
	var do_godz = 0;
	var od_godz = 11;
	
	teraz=new Date();
	aktTime = teraz.getTime();
	godzina=teraz.getHours();
	minuta=teraz.getMinutes();
	sekunda=teraz.getSeconds();
	czas=godzina+":"+minuta+":"+sekunda;
	dzien=teraz.getDate();
	dz_tyg=teraz.getDay();
	miesiac=teraz.getMonth();
	rok=1900+teraz.getYear();
	data=dzien+" "+nazwy_mies[miesiac]+" "+rok;

	document.getElementById("data").innerHTML = data;
	document.getElementById("dzien").innerHTML = nazwy_tyg[dz_tyg];

	if (dz_tyg == 0)
	{
		pozost = new Date(rok,miesiac,dzien+1,od_godz,0,0);
	}
	else
	{
		if (dz_tyg == 5 || dz_tyg == 6)
		{
			do_godz = 23;
			if (godzina <= od_godz)
			{
				stan = false;
				pozost = new Date(rok,miesiac,dzien,od_godz,0,0);
			}
			
			if (godzina >= do_godz)
			{
				if (dz_tyg == 6)
					pozost = new Date(rok,miesiac,dzien-1,od_godz,0,0);
				else
					pozost = new Date(rok,miesiac,dzien,od_godz,0,0);
				stan = false;
			}
				
			if (godzina >= od_godz && godzina < do_godz)
			{
				pozost = new Date(rok,miesiac,dzien,do_godz,0,0);
				stan = true;
			}
		}
		else
		{
			do_godz = 22;
			if (godzina <= od_godz)
			{
				stan = false;
				pozost = new Date(rok,miesiac,dzien,od_godz,0,0);
			}
			
			if (godzina >= do_godz)
			{
				pozost = new Date(rok,miesiac,dzien+1,od_godz,0,0);
				stan = false;
			}
	
			if (godzina >= od_godz && godzina < do_godz)
			{
				pozost = new Date(rok,miesiac,dzien,do_godz,0,0);
				stan = true;
			}
		}
	}


	ile = pozost.getTime() - aktTime;
	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 && stan)
		document.getElementById("zamk").innerHTML = "Do zamknięcia pozostało "+godzin+"h "+minut+"min "+sekund+"s";
	else
	{
		document.getElementById("zamk").innerHTML = "Do otwarcia pozostało "+Math.abs(godzin)+"h "+minut+"min "+sekund+"s";	
	}
	
	if (stan)
	{
		document.getElementById("stan").innerHTML = "[ OTWARTE ]";
	}
	else
	{
		document.getElementById("stan").innerHTML = "[ ZAMKNIĘTE ]";
	}
	
	Timer = setTimeout("time()",1000);
}
0

Szczerze? Mój kombajn AJAXowy [w grze MMORPG 2D via WWW] zajmuje mniej kodu.
Jeśli liczysz od jakiejś godziny do jakiejś, to wystarczy:

Pobrać aktualny czas w formacie 3 zmiennych (HMS)
Zdefiniować zmienne godziny zamknięcia i otwarcia
Sprawdzić czy G[OPEN]<H<G[CLOSE]
Odjąć naszą datę od godziny otwarcia/zamknięcia

0

kod wydaje się rozległy dlatego, że od pn-cz lokal jest czynny od 11 do 22, pt-sb od 11 do 23, a w niedziele nieczynne, a to wymaga dodatkowych zapętleń... pomijając jednak estetykę dlaczego jest to nieprawidłowe wyświetlane w IE, a firefox ok. to że wiecznie jest problem z float'ami i marginesami w IE to rozumiem, ale dlaczego js nie działa poprawnie...

0

po resztą jeżeli lokal jest zamknięty, to zegar oblicza czas do otwarcia, a jeżeli lokal jest otwarty to godziny do zamknięcia

0

Udostępnij jak możesz jakąś stronę gdzie będzie zaimplementowany ten skrypt, przejadę Firebugiem i tym IE Development cośtam...

1 użytkowników online, w tym zalogowanych: 0, gości: 1