Datum sekündlich aktualisieren
dirk
- php
0 Sebastian Becker0 dirk0 Sebastian Becker
Hallo!
Wie kann man die getDate() Funktion jede Sekunde automatisch neu aufrufen, sodass immer das aktuelle Datum inkl aktueller Uhrzeit erscheint ?
Hab schon gegoogelt aber nix passendes gefunden :-/
Danke
dK
Hallo,
Wie kann man die getDate() Funktion jede Sekunde automatisch neu aufrufen, sodass immer das aktuelle Datum inkl aktueller Uhrzeit erscheint ?
das ist nicht empfehlenswert, da ja jedesmal eine neue Serververbindung hergestellt werden muß. Das Laden der Seite wird dann ohnehin normalrweise mehr als eine sekunde in Anspruch nehmen.
Wenn Dir die Anzeige der Zeit mit Javascript (mit innerhtml oder einem input-Feld kann man sekündlich aktualisieren) nicht reicht, weil diese ja von den Rechnereinstellungen abhängt, kannst Du die per Javascript ermittelte Zeit beim Laden der Seite mit der Serverzeit oder der Zeit von einem Zeitserver (noch genauer) synchronisieren.
Grüße,
Sebastian
Hi
Wenn Dir die Anzeige der Zeit mit Javascript (mit innerhtml oder einem input-Feld kann man sekündlich aktualisieren) nicht reicht, weil diese ja von den Rechnereinstellungen abhängt, kannst Du die per Javascript ermittelte Zeit beim Laden der Seite mit der Serverzeit oder der Zeit von einem Zeitserver (noch genauer) synchronisieren.
Das klingt ja cool :-)
Hab aber gleich drei Fragen:
1.) Wie macht man so eine Sync. ?
2.) Was genau ist ein Zeitserver ? Wie greift man da drauf zu ?
3.) Ich will das ganze für 2 versch. Zeitzonen machen. Wie löse ich das am besten ?
(2 entspr. versch. Zeitserver oder die eine Zeit aus der anderen berechnen ? - Problem mit Sonderfällen (Sommerzeit usw....))
achja, und VIELE DANK für die superschnelle Hilfe zu so später Stunde :))
thx&bye,
dK
Hi, dk,
1.) Wie macht man so eine Sync. ?
Differenz im Unix-Timestamp vom Server/Time Server und Client (PC) berechnen und diese Differenz clientseitig addieren.
2.) Was genau ist ein Zeitserver ? Wie greift man da drauf zu ?
Ein atomgesteuertes Zeitnormal zur Synchronisation von Uhren in Netzwerken
http://www.boulder.nist.gov/timefreq/service/its.htm
Mit fsockopen
http://www.kloth.net/software/timesrv1.php
3.) Ich will das ganze für 2 versch. Zeitzonen machen. Wie löse ich das am besten ?
Das ist am leichtesten, denn die Zeitdifferenz ist ja bekannt und konstant - einfach addieren!
(2 entspr. versch. Zeitserver oder die eine Zeit aus der anderen berechnen ? - Problem mit Sonderfällen (Sommerzeit usw....))
Die Time Server geben immer Weltzeit aus. Aus Redundanz- und Lastverteilungsgründen gründen kann man ggf. den Server wechseln. Für den Wechsel zur Sommerzeit (uneinheitlich) mußt Du ein Skript schreiben oder finden ...
Wie gut sind denn Deine PHP/JavaSkriptkenntnisse?
Grüße,
Sebastian
Hi Sebastian,
Wie gut sind denn Deine PHP/JavaSkriptkenntnisse?
Also das mit PHP krieg ich hin.
Aber für ein JS-Code Besispiel wär ich Dir dankbar :-)
Gruß,
dK
Hi nochmal:
bei mir siehts jetzt so aus:
<html><head><title></title>
<script type="text/javascript">
<!--
function datum(){
<?php
$timestamp = time();
$datum = date("(D) d.m.Y H:i:s",$timestamp);
?>
document.all.zeitzone.innerHTML = "aktuelle Zeit: <? echo "$datum"; ?> <br>\n";
setTimeout("datum()",1000)
}
//-->
</script>
</head>
<body onLoad="datum()">
<p id="zeitzone">
</p>
</body>
</html>
Angezeigt wirds, nur leider nicht aktualisiert :-/
Miit setTimeout müsste doch die Funktion jede Sekunde neu geladen werden und somit jedesmal ein neues Datum ausspucken, oder ??
Wo ist der Fehler ?
thx,
dK
Moin!
<script type="text/javascript">
<!--function datum(){
<?php
$timestamp = time();
$datum = date("(D) d.m.Y H:i:s",$timestamp);
?>
document.all.zeitzone.innerHTML = "aktuelle Zeit: <? echo "$datum"; ?> <br>\n";
setTimeout("datum()",1000)
}
//-->
</script></head>
<body onLoad="datum()">
Angezeigt wirds, nur leider nicht aktualisiert :-/
Miit setTimeout müsste doch die Funktion jede Sekunde neu geladen werden und somit jedesmal ein neues Datum ausspucken, oder ??Wo ist der Fehler ?
Lass dir einfach mal den von PHP generierten Quellcode ausgeben: Rechte Maustaste, "Quelltext anzeigen". Dann siehst du, was Javascript für Code ausführt. Und du wirst sehen, warum sich das Datum nicht ändern.
Bedenke immer eines: Wo wird PHP ausgeführt, wo wird Javascript ausgeführt? Und durch welche Aktivitäten des Users treten beide in Aktion?
- Sven Rautenberg
Lass dir einfach mal den von PHP generierten Quellcode ausgeben: Rechte Maustaste, "Quelltext anzeigen". Dann siehst du, was Javascript für Code ausführt. Und du wirst sehen, warum sich das Datum nicht ändern.
Bedenke immer eines: Wo wird PHP ausgeführt, wo wird Javascript ausgeführt? Und durch welche Aktivitäten des Users treten beide in Aktion?
Ok, es ändert sich nicht, weil der PHP-Teil sich nicht aktualisiert.
Soweit bin ich jetzt auch schon :)
Aber ich komm wirklich nicht mehr weiter, wäre also um Hilfe dankbar :))
thx
dK
Moin!
Ok, es ändert sich nicht, weil der PHP-Teil sich nicht aktualisiert.
Soweit bin ich jetzt auch schon :)
Gut, du hast ein wichtiges Lernziel erreicht. :)
Aber ich komm wirklich nicht mehr weiter, wäre also um Hilfe dankbar :))
Lass PHP zunächst einfach weg. Suche in den SelfHTML-Javascript-Beispielen nach einer Uhr. Irgendetwas, dass die Zeit zählt.
Diese Uhr mußt du dann etwas anpassen. Du willst die aktuelle Zeit des Computers des Benutzers wissen und anzeigen.
Und im letzten Schritt kommt PHP hinzu. Du schreibst mit PHP die auf dem Server aktuelle Zeit in das Javascript. Das Javascript guckt sofort nach, wie spät es auf dem Benutzerrechner ist, und berechnet die Zeitdifferenz zwischen User-Uhr und Server-Uhr. Da anzunehmen ist, dass die User-Uhr auch im Sekundentakt zählt, mußt du zu jeder User-Uhrzeit nur noch die errechnete Zeitdifferenz addieren, um zur Server-Zeit zu gelangen.
Die komplexeren Themen "Sommerzeit" und "Zeitzonen" sind lediglich eine Variation der Differenzberechnung.
- Sven Rautenberg
Hallo,
ich habe schon ein Skript geschrieben, daß die Synchronisation mit dem NIST-Zeitserver durchführt, etc.. Es fehlen jedoch die letzten Finessen wie Sommerzeitanpassung.
Wer ernsthaft versuchen will, das Skript zu Ende zu entwickeln und den Code dann zur Verfügung stellt, kann es von mir per e-mail bekommen.
Grüße,
Sebastian