JS mit Serverzeit abgleichen.

hulpmiddel

Grünschnabel
Guten Abend zusammen,

gibt es bei Javascript in irgendeiner Art die möglichkeit, die Uhrzeitabfrage anstatt von der Uhrzeit des Besuchers mit der eines (zb. Atomuhrzeit-Server) oder dem des eigenen Servers abzugleichen. Habe bei google und hier in der Suche nichts passendes gefunden, vielleicht hab ich auch die falschen Stichwörter verwendet.

Code:
<form action="">
	<span id="text"></span>
	<script type="text/javascript">
	(function updateText(){
		var jetzt = new Date();
		var Std = jetzt.getHours();
		var Min = jetzt.getMinutes();
		var Day = jetzt.getDay();

		var text = "";

text += '<font size="+1" color="#FFFF00" face="Helvetica">';

		if (Day == 6 && Std >= 19){
		  text += "Montag geöffnet ab 11:00 Uhr. Derzeit leider geschlossen.";
		}
		if (Day == 0){
		  text += "Morgen geöffnet ab 11:00 Uhr. Heute leider geschlossen.";
		}
		else {
			if (Std <= 24 && Std >= 19 && Day >= 1 && Day <= 5){
				text += "Morgen geöffnet ab 11:00 Uhr. Derzeit leider geschlossen.";
			}
			if (Std <= 9 && Std >= 00){
				text += "Heute geöffnet ab 11:00 Uhr. Derzeit leider geschlossen.";
			}
			if (Std == 10 && Min >= 00){
				var Rest = 60 - Min;
				text += "Heute geöffnet ab 11:00 Uhr. Öffnet in " + Rest + " Minuten.";
			}
			if (Std >= 11 && Std < 19){
				text += "Heute geöffnet bis 19:00 Uhr.";
			}
			if (Std >= 11 && Std < 18){
				text += " Geöffnet. Guten Appetit!";
			}
			if (Std == 18 && Min >= 00){
				var Rest = 60 - Min;
				text += " Schließt in " + Rest + " Minuten.";
			}
			else {
				text += "";
			}
		}
		document.getElementById("text").innerHTML = text;
		window.setTimeout(updateText, 1000);
	})();
	</script>
</form>

Liebe Grüße... Benny! :)
 
Du könntest eine Anfrage mit AJAX an den Server schicken, allerdings musst du dabei bedenken, dass auch das wieder eine gewisse Latenz beinhaltet. Die kannst du zwar versuchen zu beheben, in dem du dir merkst, wann die Anfrage geschickt wurde und dann schaust, wie lange das gedauert hat, allerdings kannst du damit nicht berechnen, wie lange die Daten vom Server zum Client gebraucht haben. Du könntest dir dann nur denken, dass es vermutlich etwa die Hälfte der Zeit ist, aber exakt ist etwas anderes.
Javascript:
var time = 0;
(function() {
  time = ( new Date() ).valueOf();
  $.post( "/servertime", function ( data ) {
    data = data * 1;
    var diff = ( new Date() ).valueOf() - time;
    console.log( data + ( diff / 2 ) );
  });
)();
 
Zurück