Tage zwischen zwei Timestamps im Format dd.mm.jjjj ausgeben

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

  • Tage zwischen zwei Timestamps im Format dd.mm.jjjj ausgeben

    Hallo Leute,

    brauche mal wieder eure Hilfe.
    Wie ich zwei Timestamps vergleiche und die Differenz in Stunden/Tage/Sekunden ausgebe weiß ich und wird auch überall erklärt.

    Jetzt benötige ich allerdings eine Funktion die mir die "ganzen Tage" anzeigt, welche zwischenzwei Timestamps liegen.
    In der Datenbak habe ich das Startdatum und das Enddatum als Timestamp gespeichert:

    Startdatum: 19.05.2011 in der Datenbak als: 1305799200
    Enddatum: 21.05.2011 in der Datenbank als: 1305972000

    Nun möchte ich durch eine While Schleife z.B. folgendes ausgeben:

    19.05.2011
    20.05.2011
    21.05.2011

    Damit ich im nächsten Schritt zu den einzelnen Tagen weitere Daten hinzufügen kann. Was dann aber nicht das Problem ist.
    Dazu gibt es eine weitere Tabelle in denen die "Tage mit Daten" nochmals eingefügt werden.

    Jetzt muss ich nur eine Funktion finden um alle kompletten Tage auszugeben. Habe schon die Idee gehabt die Timestamps in Tage umzurechnen und dann solange " durch einen Tag" zu teilen bis das erste Ergebnis unterschritten wird...

    Bin mir aber nicht sicher wie ich das ganze jetzt umsetzen soll.

    Hoffe ihr könnt mir helfen.

    Mit freundlichen Grüßen
    Dennis

  • #2
    Simple Schleife, und darin auf den Start-Timestamp jeweils einen Tag draufaddieren* - so lange, bis der Ziel-Tag erreicht wird.

    * bspw. per strtotime oder DateTime::add
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Hallo,

      das Thema hatten wir doch letztens erst

      h3ll hatte da etwas geschrieben, was dir weiterhelfen sollte.

      Gruß,

      Amica
      [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
      Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
      Super, danke!
      [/COLOR]

      Kommentar


      • #4
        [COLOR=#000000][FONT=Courier New][COLOR=black][COLOR=#0000cc]Habe den angegebenen Code:[/COLOR][/COLOR][/FONT][/COLOR]

        PHP-Code:
         while ($rows=mysql_fetch_array($q)) {
         
        $startdatum date("d.m.Y",$rows[startdatum]);
         
        $enddatum date("d.m.Y",$rows[enddatum]);
         echo 
        "<tr><td>$startdatum bis $enddatum</td><td>";
         echo 
        $rows['titel'];
         echo 
        "</td><td>";
         echo 
        $rows['beschreibung'];
         echo 
        '</td><td>';
         
        for (
        $date = clone $startdatum$date <= $enddatum;) {
            echo 
        $date->format('d.m.Y') . '<br />';
        }  
         } 
        [COLOR=#000000][COLOR=#006600][COLOR=black]Jetzt folgendermaßen verändert. Leider möchte er das nicht ausgeben und gibt mir folgenden Fehler aus:[/COLOR][/COLOR][/COLOR]

        [COLOR=#000000][COLOR=#006600][COLOR=#000000]Parse error: syntax error, unexpected T_VARIABLE, expecting ';' in /homepages/14/d331953917/htdocs/login/turnier/edit.php on line 69[/COLOR][/COLOR][/COLOR]

        [COLOR=#000000][COLOR=#006600][COLOR=#000000]In Line 69 steht wie ihr warscheinlich schon vermutet der neue Code:[/COLOR][/COLOR][/COLOR]

        PHP-Code:
        $date_from = new DateTime("2010-08-22");
        $date_to = new DateTime("2011-07-22");

        for (
        $date = clone $date_from$date <= $date_to$date->modify('next wednesday')) {
        echo 
        $date->format('Y-m-d') . '<br />';

        [COLOR=#000000][COLOR=#006600][COLOR=black]Leider habe ich nicht ganz verstanden was die Angabe:[/COLOR][/COLOR][/COLOR]

        [COLOR=#000000][COLOR=#006600][COLOR=#0000cc][FONT=Courier New]
        PHP-Code:
        $date->modify('next wednesday'
        [/FONT][/COLOR][/COLOR][/COLOR]

        [COLOR=#000000][COLOR=#006600][FONT=Courier New][COLOR=darkred][COLOR=#006600][COLOR=#000000]bedeutet. Vielleicht habe ich da jetzt einen Denkfehler... Liegt das vielleicht an der while Schleife?[/COLOR][/COLOR][/COLOR][/FONT][/COLOR]

        [COLOR=#000000][COLOR=#006600][FONT=Courier New][COLOR=darkred][COLOR=#006600]Vielen Dank schonmal für eure bisherigen Antworten.[/COLOR][/COLOR][/FONT][/COLOR][/COLOR][/COLOR]
        [COLOR=#000000]
        [/COLOR]
        Zuletzt geändert von AmicaNoctis; 20.05.2011, 14:59. Grund: Fehlposting gejoint

        Kommentar


        • #5
          Ein bisschen Handbuch lesen solltest du selber. Klar trifft das nicht exakt deinen Fall, aber "next wednesday" durch "+1 day" ersetzen, hätte man schaffen können! Auch kann man Beiträge bearbeiten, statt einfach alles nochmal reinzuklatschen.
          [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
          Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
          Super, danke!
          [/COLOR]

          Kommentar


          • #6
            Sorry hatte gar nicht gesehen das ich den Beitrag bearbeiten kann. Werde nächstes mal etwas genauer lesen ;-)

            Ich glaube ich habe es jetzt geschafft. Sollte noch ein Fehler auftauchen werde ich diesen Beitrag editieren anstatt neu zu posten ;-)

            Liebe Grüße und Danke
            Dennis

            Edit:

            Ich bekomme das ganze nicht zum Laufen. Selbst die Original php Funktion aus dem anderem Post funktioniert nicht. Habe mir auch die Dokumentation zu datetime angeschaut... müsste ja eig. funktionieren...

            Fatal error: Cannot instantiate non-existent class: datetime in /homepages/14/d331953917/htdocs/login/turnier/edit.php on line 78

            PHP-Code:
            <?php
            $datum_von 
            "2010-08-22"
            $datum_bis "2011-07-22"
            for (
            $date = new DateTime($datum_von); $date <= $datum_bis$date->modify('next wednesday')) { 
                echo 
            $date->format('Y-m-d')."<br>";  
            }  
            ?>
            [COLOR=#000000]
            [/COLOR]
            Zuletzt geändert von Baracuda-man; 20.05.2011, 15:15.

            Kommentar


            • #7
              Ein Edit für einen weiteren Fehler ist vielleicht nicht so gut deswegen Poste ich den neuen Fehler hier nochmals.

              Ich bekomme das ganze nicht zum Laufen. Selbst die Original php Funktion aus dem anderem Post funktioniert nicht. Habe mir auch die Dokumentation zu datetime angeschaut... müsste ja eig. funktionieren...

              Fatal error: Cannot instantiate non-existent class: datetime in /homepages/14/d331953917/htdocs/login/turnier/edit.php on line 78

              PHP-Code:
              <?php
              $datum_von 
              "2010-08-22"
              $datum_bis "2011-07-22"
              for (
              $date = new DateTime($datum_von); $date <= $datum_bis$date->modify('next wednesday')) { 
                  echo 
              $date->format('Y-m-d')."<br>";  
              }  
              ?>

              Kommentar


              • #8
                Dann ist vermutlich deine PHP-Version älter als 5.3.0, da gibt's noch kein DateTime.
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Kommentar


                • #9
                  Da hast du Recht ich habe noch 5.1 glaube ich... kann das aber nicht ändern. Wie kann ich dann das ganze Problem anders lösen? Habe echt leider keine Ahnung wie ich das ganze jetzt machen kann.

                  Kommentar


                  • #10
                    Siehe meine erste Antwort ...
                    I don't believe in rebirth. Actually, I never did in my whole lives.

                    Kommentar


                    • #11
                      Zitat von Baracuda-man Beitrag anzeigen
                      Da hast du Recht ich habe noch 5.1 glaube ich... kann das aber nicht ändern. Wie kann ich dann das ganze Problem anders lösen?
                      Anderen Hoster suchen oder den Hoster darauf aufmerksam machen, dass er Uraltsoftware verwendet, die ein Sicherheitsrisiko darstellt.

                      Kommentar


                      • #12
                        hallo,

                        ich möchte jetzt auch nicht den Code hier rein schreiben, da es doch sehr einfach ist.

                        du fängst mit dem Startdatum an in einer for Schleife und gibtst als Bedingung an daß nicht über das Enddatum hinaus gehen soll.

                        ein Tag hat 24 Stunden mal 60 Minuten mal 60 Sekunden das addierst du zum Timestamp dazu und innerhalb der for Schleife holst du dann mit der Funktion date() dein Datum.

                        phpsven

                        Kommentar


                        • #13
                          Zitat von phpsven Beitrag anzeigen
                          ein Tag hat 24 Stunden mal 60 Minuten mal 60 Sekunden
                          Stimmt nicht. Es gibt auch Tage mit 23 oder 25 Stunden.

                          Kommentar


                          • #14
                            Wenn es nur um das Datum geht (ohne Uhrzeit), rechnest du einfach immer mit 12:00Uhr, dann haut das schon hin.
                            [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                            Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                            Super, danke!
                            [/COLOR]

                            Kommentar


                            • #15
                              Zitat von AmicaNoctis Beitrag anzeigen
                              Wenn es nur um das Datum geht (ohne Uhrzeit), rechnest du einfach immer mit 12:00Uhr, dann haut das schon hin.
                              Ja, das wäre natürlich ein Workaround. Aber warum die Pfuschmethode, wenn man es auch (ohne Aufwand) sauber machen kann?

                              Kommentar

                              Lädt...
                              X