vandamp
Erfahrenes Mitglied
Hallo,
ich speichere mit now() das derzeitige Datum in eine mysql Datenbank (Feld ist ein Datetime).
Wenn ich dieses Datum auslese bekomme ich es so YYYY-MM-DD HH:MM:SS.
Das Datum aus der DB will ich jetzt mit der aktuellen Zeit vergleichen und dann die Differenz Ausgeben.
Was ich bis jetzt hab schaut so aus :
Als Server verwende ich derzeit den XAMPP, beim Eintragen in die DB stimmt die aktuelle Zeit, wenn ich allerdings dann wie oben in dem Skript die Zeit vergleiche, schaut es aus als ob der Server 28 Stunden in der Vergangenheit ist. Ich schätze der XAMPP nimmt einfach die Windowszeit, diese ist aber korrekt.
Weiß vielleicht jemand, warum es zu dieser Differenz kommt?
Habe auch schon versucht anstatt die mktime() funktion von php zu benutzen den timestamp selbst zu errechnen, da kommt allerdings nur Blödsinn raus. hab mal gehört die Zeit wird erst ab 1970 oder so gerechnet?
ich speichere mit now() das derzeitige Datum in eine mysql Datenbank (Feld ist ein Datetime).
Wenn ich dieses Datum auslese bekomme ich es so YYYY-MM-DD HH:MM:SS.
Das Datum aus der DB will ich jetzt mit der aktuellen Zeit vergleichen und dann die Differenz Ausgeben.
Was ich bis jetzt hab schaut so aus :
PHP:
<?php
//so kommt das Datum aus meiner DB
$datum = '2010-11-21 02:05:57';
// Datum aufteilen
$Jahr = substr($datum,0,4);
$Monat = substr($datum,5,2);
$Tag = substr($datum,8,2);
$Stunde = substr($datum,11,2);
$Minute = substr($datum,14,2);
$Sekunde = substr($datum,17,2);
//Datum getrennt ausgeben
echo '<br>Datum '.$datum.'';
echo '<br>Jahr '.$Jahr.'';
echo '<br>Monat '.$Monat.'';
echo '<br>Tag '.$Tag.'';
echo '<br>Stunde '.$Stunde.'';
echo '<br>Minute '.$Minute.'';
echo '<br>Sekunde '.$Sekunde.'';
//timestamp selbst erstellen?
if($Monat == 1 ) { $Multi = 31;}
if($Monat == 2 ) { $Multi = 31+28;}
if($Monat == 3 ) { $Multi = 31+28+31;}
if($Monat == 4 ) { $Multi = 31+28+31+30;}
if($Monat == 5 ) { $Multi = 31+28+31+30+31;}
if($Monat == 6 ) { $Multi = 31+28+31+30+31+30;}
if($Monat == 7 ) { $Multi = 31+28+31+30+31+30+31;}
if($Monat == 8 ) { $Multi = 31+28+31+30+31+30+31+31;}
if($Monat == 9 ) { $Multi = 31+28+31+30+31+30+31+31+30;}
if($Monat == 10 ) { $Multi = 31+28+31+30+31+30+31+31+30+31;}
if($Monat == 11 ) { $Multi = 31+28+31+30+31+30+31+31+30+31+30;}
if($Monat == 12 ) { $Multi = 31+28+31+30+31+30+31+31+30+31+30+31;}
$timestamp = $Sekunde + $Minute * 60 + $Stunde *60*60 + $Tag * 60 * 60 *24 + $Monat *60 * 60 *24 * $Multi + $Jahre * 60*60*24*365;
//timestamp mit mktime erstellen
$time = mktime($Sekunde,$Minute,$Stunde,$Monat,$Tag,$Jahr);
echo'<br><br>var timestamp '.$timestamp.' dieser ist selbst errechnet';
echo'<br>var time '.$time.' diesen erstelle ich mit der mktime() funktion';
$now = time();
echo'<br>var now '.$now.' timestamp von php';
//differenzen errecnen
$dateDiff = $now - $time;
$Jahre = floor($dateDiff/(60*60*24*365));
$Tage = floor($dateDiff/(60*60*24));
$Stunden = floor($dateDiff/(60*60));
$Minuten = floor($dateDiff/(60));
$Sekunden = floor($dateDiff/1);
// alle errechneten Differenzen ausgeben
echo '<br><br><br>Differenz';
echo '<br>Jahre '.$Jahre.'';
echo '<br>Tage '.$Tage.'';
echo '<br>Stunden '.$Stunden.'';
echo '<br>Minuten '.$Minuten.'';
echo '<br>Sekunden '.$Sekunden.'<br><br>';
// nur höchsten wert ausgeben, der größer gleich 1 ist + Zeitcheck
if($Jahre == 1) { echo ''.$Jahre.' Jahr';}
if($Jahre > 1) { echo ''.$Jahre.' Jahre';}
if($Jahre == 0 && $Monate == 0 && $Tage == 1) { echo ''.$Tage.' Tag';}
if($Jahre == 0 && $Monate == 0 && $Tage > 1) { echo ''.$Tage.' Tage';}
if($Jahre == 0 && $Monate == 0 && $Tage == 0 && $Stunden == 1) { echo ''.$Stunden.' Stunde';}
if($Jahre == 0 && $Monate == 0 && $Tage == 0 && $Stunden > 1) { echo ''.$Stunden.' Stunden';}
if($Jahre == 0 && $Monate == 0 && $Tage == 0 && $Stunden == 0 && $Minuten == 1) { echo ''.$Minuten.' Minute';}
if($Jahre == 0 && $Monate == 0 && $Tage == 0 && $Stunden == 0 && $Minuten > 1) { echo ''.$Minuten.' Minuten';}
if($Jahre == 0 && $Monate == 0 && $Tage == 0 && $Stunden == 0 && $Minuten == 0 && $Sekunden == 1) { echo ''.$Sekunden.' Sekunde';}
if($Jahre == 0 && $Monate == 0 && $Tage == 0 && $Stunden == 0 && $Minuten == 0 && $Sekunden > 1) { echo ''.$Sekunden.' Sekunden';}
?>
Als Server verwende ich derzeit den XAMPP, beim Eintragen in die DB stimmt die aktuelle Zeit, wenn ich allerdings dann wie oben in dem Skript die Zeit vergleiche, schaut es aus als ob der Server 28 Stunden in der Vergangenheit ist. Ich schätze der XAMPP nimmt einfach die Windowszeit, diese ist aber korrekt.
Weiß vielleicht jemand, warum es zu dieser Differenz kommt?
Habe auch schon versucht anstatt die mktime() funktion von php zu benutzen den timestamp selbst zu errechnen, da kommt allerdings nur Blödsinn raus. hab mal gehört die Zeit wird erst ab 1970 oder so gerechnet?