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

  • 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

  • #2
    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
    apt-get install npm -> npm install -g bower -> bower install <package> YOLO [URL]https://www.paypal.me/BlackScorp[/URL] | Mein Youtube PHP Kanal: [url]https://www.youtube.com/c/VitalijMik[/url]

    Kommentar


    • #3
      Danke für die schnelle Antwort.

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

      Kommentar


      • #4
        PHP-Version zu alt? (<5.3)
        [QUOTE=nikosch]Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.[/QUOTE]

        Kommentar


        • #5
          Da sich das Ergebnis genau um eine Stunde unterscheidet, vermute ich mal, das die Zeitumstellung der Grund sein wird.
          [URL="http://php.net/manual/en/migration55.deprecated.php"]mysql ist veraltet[/URL] [URL="http://php-de.github.io/jumpto/mail-class/"]Mails senden: Ohne Probleme und ohne mail()[/URL]
          [PHP]echo 'PS: <b>Meine Antwort ist keine Lösung, sondern nur eine Hilfe zur Lösung.</b>';[/PHP]

          Kommentar


          • #6
            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.
            [COLOR="#F5F5FF"]--[/COLOR]
            [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
            „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
            [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
            [COLOR="#F5F5FF"]
            --[/COLOR]

            Kommentar


            • #7
              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?

              Kommentar


              • #8
                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

                Kommentar


                • #9
                  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.
                  [COLOR="#F5F5FF"]--[/COLOR]
                  [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                  „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                  [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                  [COLOR="#F5F5FF"]
                  --[/COLOR]

                  Kommentar

                  Lädt...
                  X