Datumsprobleme mit PHP

sn4ke

treuer Stammgast
Hallo zusammen

Ich verstehe die Welt nicht mehr. Seit einem halben Tag suche ich nach dem Problem und werde einfach nicht fündig.

Ich würde gerne die Differenz von 2 Datenn berechnen, doch mir wird konstant eine Stunde zuviel angezeigt. Ich könnte mir vorstellen, dass es etwas mit den Zeitzonen zu tun hat, aber was fand ich bisher nicht raus.

Code:
<?php

$date1 = 1220248800; //Entspricht dem 1.9.08 - 8:00 Uhr
$date2 = 1220277600; //Entspricht dem 1.9.08 - 16:00 Uhr
$date3 = $date2 - $date1

echo date("H:i",$date3); //Sollte die Differenz berechnen. Anstatt 8h, was ja auch der Differenz entspräche, erhalte ich 9h als Differenz

?>

Vielleicht bin ich lauter Code langsam auch einfach blind und sehe das Problem nicht.

Vielen Dank für eure Hilfe.
 
weil das Ergebniss nicht der 1.9.08 ist sonder der 01.01.1970 09:00 ;)

du darfst nicht beide Unixtime voneinander abziehen, sonder nur den Wert von 8 Stunden von $date 2.

Also $date2 - 28800
 
Ja aber müsste das Resultat nicht der 01.01.1970 08:00 Uhr sein? Dann könnte man da mit date() wieder die Stunden rausnehmen und hätte die Differenz. Oder wie würdest du das machen? Die 8h sind ja genau die Stunden die ich irgendwie berechnen möchte und ich dachte per timestemp-Vergleich ginge das am einfachsten?!

Weil 16:00 Uhr - 8:00 Uhr sollte ja 8:00 Uhr ergeben?! Ausser ich habe gerade ein krasses Mathe-Blackout..
 
Ja aber müsste das Resultat nicht der 01.01.1970 08:00 Uhr sein? ...t..

Nein die Unixtime-"Zeitrechnung" begann mit dem 1.1.1970 1:00 daher die eine Stunde.


Mit einer Funktion

http://www.hacksaw.de/zeitfunktion.php

Code:
<?php  
function zeitformat($sekundenzahl)  
  {  
  $sekundenzahl = abs($sekundenzahl); // ganzahlenwert bilden  
  return sprintf("%d Tage %2d:%02d:%02d",  
  $sekundenzahl/60/60/24,($sekundenzahl/60/60)%24,($sekundenzahl/60)%60,$sekundenzahl%60);  
   }  
$edate =1220277600;  //1.9.08 16:00
$adate =1220248800;   //1.9.08 08:00
$einezeit = $edate-$adate;  
echo zeitformat ($einezeit);  

?>
 
Hm ja da hast du recht :)
Aber gibts da auch noch eine logische Erklärung dafür? Weil 1.1.1970 16:00 Uhr [minus] 1.1.1970 8:00 Uhr gibt für mich immer noch 1.1.1970 8:00 Uhr.

Also müsste es ja trotzdem über die Timestamps funktionieren?!
Ich frag mich nur, weil wieso es kompliziert machen, wenn es theoretisch au einfacher gehen würde. Auch wenn es aus irgendeinem Grund den ich moment nicht sehen wohl nicht geht.

Ich verstehe die Dinge lieber, als sie einfach nur zu akzeptieren :)
 
Liege ich richtig in der Annahme, dass

PHP:
Gibt die seit Beginn der Unix-Epoche (Januar 1 1970 00:00:00 GMT) bis jetzt vergangenen Sekunden zurück.
Quelle: php.net

dies aufgrund der Zeitverschiebung +1 ist für uns?

Was ist jetzt am sinnvollsten? Eine eigene Funktion, wie die deine, dafür verwenden oder einfach immer 1 subtrahieren? Es handelt sich bei meinen Berechnungen manchmal auch um Zeit verschiedener Tage. Bzw. auch auf Minuten genau, das wäre ja nochmals ein Stück komplizierter...
 
Liege ich richtig in der Annahme, dass

PHP:
Gibt die seit Beginn der Unix-Epoche (Januar 1 1970 00:00:00 GMT) bis jetzt vergangenen Sekunden zurück.

dies aufgrund der Zeitverschiebung +1 ist für uns?

Was ist jetzt am sinnvollsten? Eine eigene Funktion, wie die deine, dafür verwenden oder einfach immer 1 subtrahieren? Es handelt sich bei meinen Berechnungen manchmal auch um Zeit verschiedener Tage.

Geht schon mal garnicht, da 1 nur eine Sekunde ist, wenn dann 3600 ;) :D

Ist aber unsauber programmiert.
 
Oben