Zeitabgleich Serverzeit mit Atomzeit


jdgf

Mitglied
Hallo,

ich will mit meinem Script überprüfen, wie groß der Zeitunterschied zwischen Serverzeit und Atomzeit ist. Von der Atomzeit erhalte ich die aktuelle Zeit, die ich in Sekunden umrechne.
Dannach ermittle ich die Anzahl der Tage zwischen 01.01.1970 und 01.11.2007 (oder besser 31.10.2007?), rechne sie gleichfalls in Sekunden um und addiere sie mit der Atomzeit.

Wenn ich die Atomzeit mit der Serverzeit vergleiche, müßte sich doch die Zeitdifferenz - falls vorhanden - ergeben.

Mein Zeitunterschied ist allerdings zu groß. Was ist falsch an dem Script?
PHP:
<?php
function query_time_server ($timeserver, $socket) {
$fp = fsockopen($timeserver,$socket,$err,$errstr,5);
if ($fp) {
fputs($fp,"\n");
$timevalue = fread($fp,49);
fclose($fp);
} else {
$timevalue = " ";
}
$ret = array();
$ret[] = $timevalue;
$ret[] = $err;
$ret[] = $errstr;
return($ret);
}
$array = query_time_server('ts2.univie.ac.at', 13); // Uni Wien
sscanf($array[0], "%s %s %d %d:%d:%d %d", $t_tag, $t_monat, $tag, $stunde, $minute, $sekunde, $jahr);

echo "<br><br>";
//Atomzeit aktuell
echo "Tag:  " .$tag. "<br>";
echo "Stunde:  ".$stunde."<br>";
echo "Minute:  " .$minute. "<br>";
echo "Sekunde:  " .$sekunde. "<br>";
echo "<br><br>";
?>

<?php //Berechnung der Tage seit 01.01.1970
$tage_jetzt = mktime(0,0,0,1,10,2007);//Datum 01.11.2007
$tage_1970 = mktime(0,0,0,1,1,1970); //Datum 01.01.1970
$Sekunden_diff = ($tage_jetzt-$tage_1970);
echo "Differenz (sek) bis 01.11.2007: " .$Sekunden_diff . "<br>";
?>

<?PHP
//Atomzeit in Sek im November 2007
$atomzeit= $sekunde + $minute*60 + $stunde*60*60 + $tag*24*60*60;
echo "Atomzeit ab 01.11.2007 : " . $atomzeit . "<br>"; 
//Atomzeit November 2007 und Zeitraum Differenz
$atomzeit = $atomzeit + $Sekunden_diff;
echo "Atomzeit (sek) + Zeit (sek) von 01.01.1970 bis 31.10.2007: " . $atomzeit . "<br>";
//Berechnung Serverzeit
$serverzeit = time();
echo "Serverzeit:  " . time () . "<br>";
//Berechnung Zeitunterschied
$ergebnis =  $serverzeit - $atomzeit . "<br>";
echo "Zeitunterschied: " .$ergebnis . "<br>";
?>

Danke für eure Hilfe!
Gruß, Dietmar
 

Michael Engel

Erfahrenes Mitglied
Also den Unteren Codeteil verstehe ich nicht warum.. und warum das seltsame mit dem 1.11.? ,)

ich würde eher strtotime() verwenden da das genau so einen String einlesen kann. Und dann siehts so aus:


PHP:
<?php
function query_time_server ($timeserver, $socket) {
$fp = fsockopen($timeserver,$socket,$err,$errstr,5);
if ($fp) {
fputs($fp,"\n");
$timevalue = fread($fp,49);
fclose($fp);
} else {
$timevalue = " ";
}
$ret = array();
$ret[] = $timevalue;
$ret[] = $err;
$ret[] = $errstr;
return($ret);
}
$array = query_time_server('ts2.univie.ac.at', 13); // Uni Wien
sscanf($array[0], "%s %s %d %d:%d:%d %d", $t_tag, $t_monat, $tag, $stunde, $minute, $sekunde, $jahr);
$timeservertime = strtotime($array[0]);
echo "<br><br>";
//Atomzeit aktuell
echo "Tag:  " .$tag. "<br>";
echo "Stunde:  ".$stunde."<br>";
echo "Minute:  " .$minute. "<br>";
echo "Sekunde:  " .$sekunde. "<br>";
echo "Jahr:  " .$jahr. "<br>";
echo "<br><br>";

//Differenzzeit
echo "Zeitdifferenz in Sekunden: ".(time() - $timeservertime);
?>
 

jdgf

Mitglied
Hallo Michael,
danke für die Hilfe. Die Angaben zum 1.11. verwendete ich, da ich bei der Atomzeit nur den Zeitraum 1.11.-29.11.07 berechnete und dann die Zeit vom 1.1.1970 bis 1.11.07 hinzuzählte.
Aber es geht wesentlich einfacher und richtiger, wie deine Lösung zeigt.
Gruß, Dietmar