Netti: Unixtime "verrechnet" sich um 2 Stunden

Hallo,

ich habe eine Funktion geschrieben, die einen Unix-Zeitstempel als Parameter erwartet, von einem Referenzdatum subtrahiert und dasselbe auf ein neues Referenzdatum hochrechnet und ausgibt.

  
function newtime($unixtime) {  
$heute_ohne_uhrzeit = date("d/m/Y", time());  
$datesplit = explode("/", $heute_ohne_uhrzeit);  
$heute_null_uhr = mktime( 0, 0, 0, $datesplit[1], $datesplit[0], $datesplit[2] );  
$referenzdatum = 1257894000; // 11.11.2009 00:00:00 Uhr  
$zeitabstand = $referenzdatum - $unixtime;  
$neues_datum = $heute_null_uhr - $zeitabstand;  
return $neues_datum;  
}  

Hierbei verrechnet sich diese Funktion um genau 120 Minuten. 60 hiervon könnte ich mir ggf. noch über die Sommerzeit erklären, aber die restlichen?

Kann mir jemand sagen, warum das so ist und gibt es eine bessere Lösung für die Funktion?

Die Lösung, das über ein mysql-Statement zu machen, ist sicher gut und ich würde das auch lösen können. Aber ich update noch eine Cleartime, die als varchar gespeichert ist sowie ein paar andere Spalten.

Insofern wäre mir eine Funktion wie die obige lieber.

Viele Grüße, Netti

  1. Hi!

    Hierbei verrechnet sich diese Funktion um genau 120 Minuten. 60 hiervon könnte ich mir ggf. noch über die Sommerzeit erklären, aber die restlichen?

    Zeitzone GMT +0100

    Kann mir jemand sagen, warum das so ist und gibt es eine bessere Lösung für die Funktion?

    Unix-Timestamps sind generell UTC. Die PHP-Funktionen rechnen diese in die gemäß konfiguruierter Zeitzone lokale Zeit um. Wenn du zeitzonenunabhängig rechnen willst, musst du die Funktionen nehmen, deren Name mit gm beginnt.

    Lo!

    1. Hallo dedlfix,

      Unix-Timestamps sind generell UTC. Die PHP-Funktionen rechnen diese in die gemäß konfiguruierter Zeitzone lokale Zeit um. Wenn du zeitzonenunabhängig rechnen willst, musst du die Funktionen nehmen, deren Name mit gm beginnt.

      Danke für den Tip.

      Grüße, Netti