SSI-Datum in JavaScript
Paul
- javascript
Hallo liebe Leute!
Ich habe ein kleines Script, dass anzeigt, wie lange eine Homepage schon online ist. Nur wird zur Berechnung dieser Zeit, das Datum der Computeruhr vom User ausgelesen, was dazu führt, dass bei einer "falschen" Uhrzeit bzw. anderen Zeitzone das Script nutzlos ist.
Ich hatte jetzt die Idee das Datum mittels SSI-Befehl <!--#echo var="DATE_LOCAL" --> vom Server auszulesen und dieses zur Berechnung zu verwenden.
Nun bin ich aber in Sachen JavaScript noch ein ziemlicher Anfänger, d.h. ich weiss nicht, wie ich das SSI-Datum in das JavaScript einbauen soll. Mir wurde schon gesagt, dass ich das Datum parsen müsse, damit konnte ich aber leider auch nicht so viel anfangen...
Ich wäre sehr dankbar, wenn sich mal jemand das Script anschauen könnte und evtl. den SSI-Befehl einbauen könnte (wenn das nicht zu viel verlangt ist)!
Paul
<head>
<script language="JavaScript">
<!--
function lifetimer()
{
today = new Date()
BirthDay = new Date(document.live.age.value)
timeold = (today.getTime() - BirthDay.getTime());
msPerDay = 24 * 60 * 60 * 1000 ;
timeold = (today.getTime() - BirthDay.getTime());
e_daysold = timeold / msPerDay;
daysold = Math.floor(e_daysold);
e_hrsold = (e_daysold - daysold)*24;
hrsold = Math.floor(e_hrsold);
e_minsold = (e_hrsold - hrsold)*60;
minsold = Math.floor((e_hrsold - hrsold)*60);
secsold = Math.floor((e_minsold - minsold)*60);
window.status = "Diese Homepage ist " + daysold + " Tage, " + hrsold + " Stunde(n), " + minsold + " Minute(n), " + secsold + " Sekunde(n) online!";
timerID = setTimeout("lifetimer()",1000)
}
// -->
</script>
</head>
<body onload="lifetimer()">
<form name="live">
<input type="hidden" name="age" value="january 1, 2002, 12:00">
</form>
</body>
Moin Moin !
Ich versuch' mal, Dich in die richtige Richtung zu schubsen:
Du kannst mit <!--#config timefmt="formatstring" --> die per SSI ausgegebenen Zeiten beliebig formatieren, u.a. gibt es ein Format, daß die Sekunden seit der Epoche (1. Januar 1970, Mitternacht, GMT) ausgibt.
<!--#echo var="DATE_LOCAL" --> liefert danach also eine sehr große Zahl (aktuell etwas mehr als eine Milliarde).
<!--#flastmod file="thisone.html" --> liefert eine ähnlich große Zahl.
Details: http://httpd.apache.org/docs/howto/ssi.html
Javascript benutzt im Date-Objekt die selbe Epoche, aber mit Millisekundenauflösung, sprich: die Zahl ist 1000 mal so groß.
Details: http://selfhtml.teamone.de/javascript/objekte/date.htm#set_time
Kombiniert:
var serverdate=new Date();
serverdate.setTime(<!--#echo var="DATE_LOCAL" -->*1000);
So, der Rest ist Tippübung in Javascript.
Alexander