Serverzeit mit Javascript
Hallo ihr Lieben,
ich habe mal wieder ein Problem.
Ich möchte mit Javascript auf einer Seite die aktuelle Serveruhrzeit sekundengenau darstellen (und für weitere Abläufe verwenden).
Da Javascript Client-Seitig läuft liefert ein "new Date()" leider nur die Client Daten wie Datum und Uhrzeit.
Nun habe ich einen Ansatz gefunden, der mit einem php-Statement die aktuelle Serverzeit auslist und dann manuel die Zeit weiterzählen lässt.
Funktioniert, aber von genauer Uhrzeit kann man nicht reden, da ein sleep-Timer verwendet wird, der mir schon nach 2 Minuten um 5 Sekunden falsch geht.
Aber man kann ja die Serverzeit mit php auslesen, mit der Client-zeit vergleichen und dann immer von der Clientzeit die Differenz abziehen.
Läuft auch soweit, aber nur unter Linux mit Firefox, unter Windows bekomme ich schon beim Konvertieren des Datumsstrings als Ausgabe "NaN".
Ich habe viele Verschiedene Formatierungen der Ausgabe von date unter php durchprobiert, aber nur bei "Y,m,d,G:i:s" funktioniert auch eine Umwandlung.
Anbei mal die wichtigen Passagen:
im HTML:
<body onload='setDifference(" <?php echo date("Y,m,d,G:i:s"); ?>")'>
<span id="Zeitbereich"></span>
...
in der Javascript-Datei:
var diff = 0; Globale Variable Diff wird mit setDifference auf Abweichung server-clientZeit gesetzt
var uhr = new Date(); Globale Variable Uhr
function setDifference(servertimeString)
{
alert(uhr); <---- Zeigt im IE und FF die aktuellen Client-Daten
servertime = new Date(servertimeString)
alert(servertime); <--------Im FF stehen die Serverdaten im IE "NaN"
diff = Number(servertime)-Number(uhr);
alert(diff); //<------ FF: "-243" IE:"NaN"#
showTime();
}
function showTime()
{
.....
document.getElementById("Zeitbereich").innerHTML= uhr;
t = settimeout('showTime()',500);
}
Könnt ihr mir sagen woran es liegt, dass es im FF klappt und im IE nicht?
Gibt es vielleich bessere Varianten soetwas zu realisieren?
ich habe mal wieder ein Problem.
Ich möchte mit Javascript auf einer Seite die aktuelle Serveruhrzeit sekundengenau darstellen (und für weitere Abläufe verwenden).
Da Javascript Client-Seitig läuft liefert ein "new Date()" leider nur die Client Daten wie Datum und Uhrzeit.
Nun habe ich einen Ansatz gefunden, der mit einem php-Statement die aktuelle Serverzeit auslist und dann manuel die Zeit weiterzählen lässt.
Funktioniert, aber von genauer Uhrzeit kann man nicht reden, da ein sleep-Timer verwendet wird, der mir schon nach 2 Minuten um 5 Sekunden falsch geht.
Aber man kann ja die Serverzeit mit php auslesen, mit der Client-zeit vergleichen und dann immer von der Clientzeit die Differenz abziehen.
Läuft auch soweit, aber nur unter Linux mit Firefox, unter Windows bekomme ich schon beim Konvertieren des Datumsstrings als Ausgabe "NaN".
Ich habe viele Verschiedene Formatierungen der Ausgabe von date unter php durchprobiert, aber nur bei "Y,m,d,G:i:s" funktioniert auch eine Umwandlung.
Anbei mal die wichtigen Passagen:
im HTML:
<body onload='setDifference(" <?php echo date("Y,m,d,G:i:s"); ?>")'>
<span id="Zeitbereich"></span>
...
in der Javascript-Datei:
var diff = 0; Globale Variable Diff wird mit setDifference auf Abweichung server-clientZeit gesetzt
var uhr = new Date(); Globale Variable Uhr
function setDifference(servertimeString)
{
alert(uhr); <---- Zeigt im IE und FF die aktuellen Client-Daten
servertime = new Date(servertimeString)
alert(servertime); <--------Im FF stehen die Serverdaten im IE "NaN"
diff = Number(servertime)-Number(uhr);
alert(diff); //<------ FF: "-243" IE:"NaN"#
showTime();
}
function showTime()
{
.....
document.getElementById("Zeitbereich").innerHTML= uhr;
t = settimeout('showTime()',500);
}
Könnt ihr mir sagen woran es liegt, dass es im FF klappt und im IE nicht?
Gibt es vielleich bessere Varianten soetwas zu realisieren?
Please also mark the comments that contributed to the solution of the article
Content-ID: 161980
Url: https://administrator.de/contentid/161980
Printed on: October 13, 2024 at 10:10 o'clock
7 Comments
Latest comment
Hi,
ich habe gerade ein kleines Problem mit deinem Quellcode
Am Anfang führst du die Funktion "uhrzeit()" aus und übergibst die Serveruhrzeit mit PHP.
Wo genau ist die Funktion "uhrzeit()" definiert?
Ansonsten fallen mir als erstes die IE Sicherheitseinstellungen ein. Ist Javascript aktiviert etc.?
Hier auch noch ein Link wo ziemlich genau das gemacht wird was du haben willst:
http://www.webmaster-resource.de/uhrzeit-des-webservers-mit-javascript- ...
ich habe gerade ein kleines Problem mit deinem Quellcode
Am Anfang führst du die Funktion "uhrzeit()" aus und übergibst die Serveruhrzeit mit PHP.
Wo genau ist die Funktion "uhrzeit()" definiert?
Ansonsten fallen mir als erstes die IE Sicherheitseinstellungen ein. Ist Javascript aktiviert etc.?
Hier auch noch ein Link wo ziemlich genau das gemacht wird was du haben willst:
http://www.webmaster-resource.de/uhrzeit-des-webservers-mit-javascript- ...
Hi,
so richtig schlau werde ich aus deinem Code immer noch nicht^^
uhrzeit() steht immer noch im onLoad
Wann genau wird setDifference(servertimeString) aufgerufen?
Bei der Beschreibung deines Problemes denke ich, dass bei der Datumsübertragung von PHP zu Javascript zu einem Problem kommt.
Hast du evtl. irgendwo ein Schreibfehler der von Firefox ignoriert wird, mit dem der IE aber nicht umgehen kann?
so richtig schlau werde ich aus deinem Code immer noch nicht^^
uhrzeit() steht immer noch im onLoad
Wann genau wird setDifference(servertimeString) aufgerufen?
Bei der Beschreibung deines Problemes denke ich, dass bei der Datumsübertragung von PHP zu Javascript zu einem Problem kommt.
Hast du evtl. irgendwo ein Schreibfehler der von Firefox ignoriert wird, mit dem der IE aber nicht umgehen kann?
Moin moin,
"< code> some JS </code >" - Code-Tags wären nicht schlecht !
ich denke mal das "uhrzeit()" und "setDifference()" die selbe Funktion darstellen sollen...
Außerdem denke ich, dass dein Objektaufruf falsch ist !
w3schools.com - Tutorials - Javascript Date Object
~Arano
Edit
Achso, auf selfHTML wird "dateString" als "Monat Tag, Jahr Stunden:Minuten:Sekunden" dargestellt.
http://de.selfhtml.org/javascript/objekte/date.htm
"< code> some JS </code >" - Code-Tags wären nicht schlecht !
ich denke mal das "uhrzeit()" und "setDifference()" die selbe Funktion darstellen sollen...
Außerdem denke ich, dass dein Objektaufruf falsch ist !
w3schools.com - Tutorials - Javascript Date Object
Zitat von www.w3scools.com
There are four ways of instantiating a date:
There are four ways of instantiating a date:
new Date() // current date and time
new Date(milliseconds) // milliseconds since 1970/01/01
new Date(dateString)
new Date(year, month, day, hours, minutes, seconds, milliseconds)
new Date(milliseconds) // milliseconds since 1970/01/01
new Date(dateString)
new Date(year, month, day, hours, minutes, seconds, milliseconds)
~Arano
Edit
Achso, auf selfHTML wird "dateString" als "Monat Tag, Jahr Stunden:Minuten:Sekunden" dargestellt.
http://de.selfhtml.org/javascript/objekte/date.htm
Ok jetzt macht das alles Sinn xD
Mir fällt auf, dass z.B. ein Semikolon hinter servertime = new Date(servertimeString) fehlt.
Ich bin jetzt nicht sicher ob das so auch in deinem Quellcode steht oder nur hier auf der Seite, aber ich würde mal deinen ganzen Quellcode nach diesen Flüchtigkeitsfehlern durchsuchen.
Mir fällt auf, dass z.B. ein Semikolon hinter servertime = new Date(servertimeString) fehlt.
Ich bin jetzt nicht sicher ob das so auch in deinem Quellcode steht oder nur hier auf der Seite, aber ich würde mal deinen ganzen Quellcode nach diesen Flüchtigkeitsfehlern durchsuchen.