Falsches Serverdatum

gygra

Mitglied
Hallo, kann sich mal jemand dieses Script anschauen?
Es soll einen Uhren,bzw. Datumsvergleich zwischen Server und Client abfragen und darstellen.
Code:
var diff = 0;

var iv = 0;

var lv = new LoadVars();

lv.onLoad = function(s) {
	if (s && this.stamp != undefined) {
		var serverDate = new Date(parseInt(this.stamp, 10) * 1000);
		var clientDate = new Date();
		diff = serverDate.valueOf() - clientDate.valueOf();
	} else {
		diff = 0;
		

	}
	go();
}

lv.load("http://www.XXXXX.de/flashzeit.php");

function go() {
	clearInterval(iv);
	iv = setInterval(this, "showTime", 1000);
}

function showTime() {
	var clientDate = new Date();
	var serverDate = new Date(clientDate.valueOf() + diff);
	
	zeigTime(digi, serverDate, serverDate1);
	
}
	

function zeigTime(digi, d) {
	
		arrow_h._rotation = d.getHours()*360/12+d.getMinutes()*12/60;
		arrow_m._rotation = d.getMinutes()*360/60+d.getSeconds()*6/60;
		arrow_s._rotation = d.getSeconds()*360/60
		time.text = fillZeros(d.getHours())+":"+ fillZeros(d.getMinutes())+":"+ fillZeros(d.getSeconds());
		if (d.getMonth() <= 9) {datum.text = d.getDay()+ "." + "0"+ (d.getMonth()) + "."+ d.getFullYear();}
	else{
		datum.text = d.getDay()+"."+ d.getMonth() + "." + d.getFullYear();}
		function fillZeros(v) {
	if (v<10) {
		v = "0"+v;
	}
	return v;
		}

Das funktioniert mit der Uhrzeit auch, nur als Server-Datum kriege ich immer nur den 4.10.2007, auch wenn ich meine Client-Zeit verstelle. Ich kann mir aber nicht vorstellen, dass der Server so verstellt ist.
Das abfragende php-Script sieht so aus:
Code:
<?php

echo "stamp=".mktime();

?>
Wer weiß Rat?
 
Hi, sorry, konnte gestern nicht mehr antworten.
Das Serverdate1 ist nur ein Relikt aus 1001 Versuchen die Kiste zum Laufen zu kriegen. Das hab ich nur vergessen zu löschen. :(
 
Hmm,

hiermit:
Code:
var serverDate = new Date(parseInt(this.stamp, 10) * 1000);
bekomme ich das korrekte Datum, wenn in "stamp" die Ausgabe von "mktime()" steht.

Ich gehe daher davon aus, dass Dein Fehler eher in der Funktion "zeigeTime" liegt.

Gruß
.
 
Hmmnaja,
soweit war ich auch schon. Aber woher kommt dieses Datum? Ist der 4.10. ein besonderer oder ein Platzhaltertag Tag? So wie "John Doe" für nicht identifizierte Personen?
 
Jetzt wird´s richtig knifflig.
Das Serverdatum steht heute auf 5.10.2007 - wird also weitergezählt. Aber ein anderer php-Server liefert dasselbe Datum. Also ein Berechnungsfehler. Aber wie und wo?
 
Hi,

ok, hätte mir auch auffallen können:

- getDay() gibt nicht den Tag des Monats, sondern den Wochentag zurück. Den Tag des Montag bekommst Du per "getDate()".

- getMonth() gibt den Monat beginnend ab 0 an.

Du musst also korrekterweise folgende Werte verwenden:
Code:
textfeld.text = server.getDate()+"."+ (server.getMonth() + 1) + "." + server.getFullYear();

Gruß
.
 
Zurück