Eric Teubert: Zeiten beginnen nicht gleichzeitig

Beitrag lesen

Und zwar zeige ich einerseits die Serverzeit an und zusätzlich zählt eine Art Countdown rückwärz. Beide Funktionen lade ich im body per onload, trotzdem beginnen sie nicht gleichzeitig und ich finde, es sieht nicht schön aus, wenn die Sekunden nicht absolut gleichzeitig ticken.
Außerdem fühlte ich mich dazu gezwungen, bei der Serverzeit jede 10tel Sekunde +107 zu addieren, statt +100, damit es mit der anderen Funktion in etwa gleichschnell "tickt". Das kann eigentlich auch nicht sein ...

hier mal der Code:

<script type="text/javascript">
<!--
var time    = new Date();
var seconds = <?echo $time;?>*1000-1000;
var times = new Array();

function SZeit()
{
  seconds += 107;
  time.setTime(seconds);

var Tag      = time.getDate();
  var Monat    = time.getMonth() + 1;
  var Jahr     = time.getYear();
  if(Jahr < 999) Jahr += 1900;
  var Stunden  = time.getHours();
  var Minuten  = time.getMinutes();
  var Sekunden = time.getSeconds();
  var Vortag   = ((Tag < 10) ? "0" : "");
  var Vormon   = ((Monat < 10) ? ".0" : ".");
  var Vorstd   = ((Stunden < 10) ? "0" : "");
  var Vormin   = ((Minuten < 10) ? ":0" : ":");
  var Vorsek   = ((Sekunden < 10) ? ":0" : ":");
  var Datum    = Vortag + Tag + Vormon + Monat  + "." + Jahr;
  var Uhrzeit  = Vorstd + Stunden + Vormin + Minuten + Vorsek + Sekunden;
  var Gesamt   = Datum + ", " + Uhrzeit;

document.getElementById('servertime').firstChild.data = Gesamt;
  window.setTimeout('SZeit()',100);
}

var startdate = new Date();
var starttime = <? echo$act1v3;?>*1000;
var javatime = startdate.getTime();
var phptime = <?echo $time;?>*1000;
var zeitdif = 0;

if( phptime - javatime > 0 ) {
var zeitdif = (phptime - javatime) / 1000;
}

if( phptime - javatime < 0 ) {
var zeitdif = (javatime - phptime) / 1000;
}

function ZeitAnzeigen()
{
var absSekunden = Math.round(ZeitBerechnen()+zeitdif);
var relSekunden = absSekunden % 60;
var absMinuten = Math.abs(Math.round((absSekunden-30)/60));
var relMinuten = absMinuten % 60;
var absStunden = Math.abs(Math.round((absMinuten-30)/60));

var anzSekunden ="" + ((relSekunden > 9) ? relSekunden : "0" + relSekunden);
var anzMinuten ="" + ((relMinuten > 9) ? relMinuten : "0" + relMinuten);
var anzStunden ="" + ((absStunden > 9) ? absMinuten : "0" + absStunden);

if(absSekunden > 0) {
document.getElementById('time').firstChild.data = anzStunden + ":" + anzMinuten + ":" + anzSekunden;
}
else
{
document.getElementById('time').firstChild.data = "Fertig!";
}
window.setTimeout('ZeitAnzeigen()',100);
}

function ZeitBerechnen()
{
var actdate = new Date();
return((starttime - actdate.getTime())/1000);
}
// -->
</script>