Re: java skrypt - ile dni ma Filipek - chyba dziala

Autor: R. Żyłła (zylla_at_ck-sg.p.lodz.pl)
Data: Fri 08 May 1998 - 20:37:01 MET DST


>At 00:12 05-06-98 +0200, you wrote:
>>Przerobilem skrypt, który liczy dni i godziny... do roku 2000,
>>na skrypt, który liczy ile żyjesz dni, godzin, minut i sekund od
>>urodzenia.
>>Musze tylko stwierdzić, ze posiadam pelna nieznajomosc
>>JavaScript, i fakt, ze to dziala nalezy przypisac meskiej intuicji.
>>Chcialbym, zeby go ktos fachowo skomentowal, bo
>>na przyklad w OPERZE nie dziala, a w Netscape nie sprawdzalem

  Tu drobny dodatek: w Operze dziala ale zle tzn tak naprawde
                      Filipek niema takiego wieku jak pokazuje Opera.

> Z trzeciej strony moge powiedziec, ze dawno nie widzialem tak
> skomplikowanie napisanego programu do obliczania tak prostej rzeczy.
> Wydaje mi sie, ze mozna go dwukrotnie skrocic i uzyskac dobre wyniki.

  No wiec przysiadlem (weekend blisko praca skonczona) i poprawilem
cytuje tylko niezbedne fragmenty.

var timerID;
var timerRunning = false;
var oneday = new Date();
var today = new Date();
var enday = new Date();
var secPerDay = 0; //zbedne
var minPerDay = 0; //zbedne
var hourPerDay = 0; //zbedne
var secsLeft = 0;
var secsRound = 0;
var secsRemain = 0;
var minLeft = 0;
var minRound = 0;
var minRemain = 0;
var timeRemain = 0;
// dodana zmienna dla skrocenia calosci
var timeDiff = 0;

//======
// ciach
//======

function showtime () {
oneday = new Date("December, 11 1996 10:30"); //powinien byc przecinek po 1996
    // ale w Operze i tak nie dziala wstawianie godziny w takiej postaci

oneday.setYear("1996"); // zupelnie niepotrzebne

    // dodane trzy linie ustawienia zeby w Operze dzialalo ustalenie godziny
oneday.setHours( "10" );
oneday.setMinutes( "30" );
oneday.setSeconds( "00" );
enday = new Date(); // wstawia sie aktualny czas
    // dodana linia z nowa zmienna
timeDiff = (enday.getTime() - oneday.getTime()) / 1000; // bieg czasu w
sekundach

secsPerDay = 1000 ; // zupelnie bledne liczby
minPerDay = 60 * 1000 ; // tez jesli powaznie traktowac nazwy zmiennych
hoursPerDay = 60 * 60 * 1000; // tak samo
PerDay = 24 * 60 * 60 * 1000; // tak samo

//secsLeft = (enday.getTime() - oneday.getTime()) / minPerDay;
//secsRound = Math.round(secsLeft);
//secsRemain = secsLeft - secsRound;
//secsRemain = (secsRemain < 0)
// ? secsRemain = 60 - ((secsRound - secsLeft) * 60)
// : secsRemain = (secsLeft - secsRound) * 60;
//secsRemain = Math.round(secsRemain);

// zamiast 5 instr tego wstawiono 3 prostsze instrukcje

secLeft = timeDiff / 60;
secRound = Math.floor( secLeft );
secRemain = Math.floor( (secLeft - secRound)*60 );

//minLeft = ((enday.getTime() - oneday.getTime()) / hoursPerDay);
//minRound = Math.round(minLeft);
//minRemain = minLeft - minRound;
//minRemain = (minRemain < 0)
// ? minRemain = 60 - ((minRound - minLeft) * 60)
// : minRemain = ((minLeft - minRound) * 60);
//minRemain = Math.round(minRemain - 0.495);

// zamiast tego wstawiono prostsze instrukcje

minLeft = timeDiff / 3600;
minRound = Math.floor( minLeft );
minRemain = Math.floor( (minLeft - minRound)*60 );

//hoursLeft = ((enday.getTime() - oneday.getTime()) / PerDay);
//hoursRound = Math.round(hoursLeft);
//hoursRemain = hoursLeft - hoursRound;
//hoursRemain = (hoursRemain < 0)
// ? hoursRemain = 24 - ((hoursRound - hoursLeft) * 24)
// : //hoursRemain = ((hoursLeft - hoursRound) * 24);
//hoursRemain = Math.round(hoursRemain - 0.5);

// zamiast tego wstawiono prostsze

hoursLeft = timeDiff / 3600 / 24;
hoursRound = Math.floor( hoursLeft );
hoursRemain = Math.floor( (hoursLeft - hoursRound)*24 );

//daysLeft = ((enday.getTime() - oneday.getTime()) / PerDay);
//daysLeft = (daysLeft - 0.5);
//daysRound = Math.round(daysLeft);
//daysRemain = daysRound;

// zamiast tego wstawiono prostsze instrukcje

daysLeft = timeDiff / 3600 / 24;
daysRemain = Math.floor( daysLeft );

// reszta moze byc w zasadzie nie zmieniona

timeRemain = daysRemain + " dni, " + hoursRemain + " godzin, "
           + minRemain + " minut, " + secsRemain + " sekund";
document.clock.face.value = timeRemain;
timerID = setTimeout("showtime()",1000);
timerRunning = true;
if (daysRemain < 0) {
clearTimeout(timerID);
timerRunning = false;
//document.clock.face.value = "Czas odliczania skończony";

// raczej powinno byc

document.clock.face.value = "Blednie podane dane";
}
}
//======
// ciach
//======

BTW W Operze zle dziala funkcja Math.round()
         funkcja robi to samo co Math.ceil()

>>>http://free.polbox.pl/a/asenat/filipek.htm
>>>98-200 Sieradz Robert Dorabiala

--
Romek
      ~~~~ PeCetologia to nauka doswiadczalna ~~~~
ř¤°`°¤ř,¸¸¸,ř¤°`°¤ř,¸¸ťŤ¸,ř¤°`°¤ř,¸¸,ř¤°`°¤ř,¸¸,ř¤°`°¤ř,¸¸ť
ř¤°`°¤ř,¸¸¸,ř¤°`°¤ř,¸¸ťŤ¸,ř¤°`°¤ř,¸¸,ř¤°`°¤ř,¸¸,ř¤°`°¤ř,¸¸ť


To archiwum zostało wygenerowane przez hypermail 2.1.7 : Tue 18 May 2004 - 17:15:10 MET DST