Ankündigung

Einklappen
Keine Ankündigung bisher.

Datum Differenz mit Fehler?

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • ludger60
    hat ein Thema erstellt Datum Differenz mit Fehler?.

    Datum Differenz mit Fehler?

    Hallo,

    ich hab ein merkwürdiges Problem.

    Ich möchte die Differenz zweier Daten in Sekunden berechnen.
    Das mache ich so:
    PHP-Code:
    $diff strtotime($datum1) - strtotime($datum2); 
    Wenn ich mir nur die Zeitdifferenz ansehe erhalte ich bei $datum1=2014-03-30 und $datum2=2014-03-27 den (richtigen) Wert 259200.
    Dieses Ergebnis erhalte ich bei allen Daten die 3 Tage differieren.

    Gebe ich nun die Werte $datum1=2014-03-31 und $datum2=2014-03-28 ein (also auch wieder 3 Tage), gibt es das Ergebnis 255600. Dieses Phänomen tritt nur bei diesem Datumsvergleich auf. Alle anderen von mir getesteten Daten geben das richtige Ergebnis aus.

    Wo liegt der Fehler?

    Gruß
    Ludger

  • nikosch
    antwortet
    Wie kann ich nun aber dennoch die richtige Anzahl der Differenztage ermitteln?
    Oben hieß es noch Sekunden. Die Differenz in Tage kannst Du problemlos berechnen. Eine höhere Genauigkeit ist im Prinzip Quatsch.

    Einen Kommentar schreiben:


  • Chris.
    antwortet
    Zitat von ludger60 Beitrag anzeigen
    Danke für eure Hilfe. Genau das ist es: Die Zeitumstellung betrifft genau das angegebene Datum.

    Wie kann ich nun aber dennoch die richtige Anzahl der Differenztage ermitteln?
    BlackScorp hat dir bereits alles gezeigt, was du benötigst, denn nun verfügst du über ein DateIntervall-Objekt:

    PHP-Code:
    <?php

    $date1 
    DateTime::createFromFormat('Y-m-d','2014-03-31');
    $date2 DateTime::createFromFormat('Y-m-d','2014-03-28');
    var_dump($date1->diff($date2)->days); // 3

    Einen Kommentar schreiben:


  • ludger60
    antwortet
    Danke für eure Hilfe. Genau das ist es: Die Zeitumstellung betrifft genau das angegebene Datum.

    Wie kann ich nun aber dennoch die richtige Anzahl der Differenztage ermitteln?

    Einen Kommentar schreiben:


  • nikosch
    antwortet
    Korrekt. Der Grund ist: Mit Zeiten rechnen und mit Daten (Datum) rechnen, sind zwei grundlegend verschiedene Dinge. Zeit ist eine vereinheitlichte Meßgröße, Datumsangaben unterliegen diversen Konventionen.

    strtotime und der Begriff Timestamp sind hier leider irreführend, genau genommen handelt es sich hier um einen ((mikro-)sekundengenauen) Datumsstempel.

    Einen Kommentar schreiben:


  • ChrisvA
    antwortet
    Da sich das Ergebnis genau um eine Stunde unterscheidet, vermute ich mal, das die Zeitumstellung der Grund sein wird.

    Einen Kommentar schreiben:


  • tkausl
    antwortet
    PHP-Version zu alt? (<5.3)

    Einen Kommentar schreiben:


  • ludger60
    antwortet
    Danke für die schnelle Antwort.

    Leider gibt es bei dieser Lösung einen Fehler:
    Fatal error: Call to undefined method DateTime::createFromFormat()

    Einen Kommentar schreiben:


  • BlackScorp
    antwortet
    PHP-Code:
    $datum1 DateTime::createFromFormat('Y-m-d','2014-03-30');
    $datum2 DateTime::createFromFormat('Y-m-d','2014-03-27');
    $diff $datum1->diff($datum2);
    var_dump($diff);

    echo 
    "Sekunden: ".$diff->s
    als resultat kommt dann DateInterval mit public eigenschaften wie $d, $h usw

    Einen Kommentar schreiben:

Lädt...
X