Tage ermitteln

Einklappen
Dieses Thema ist geschlossen.
X
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Tage ermitteln

    Hallo zusammen,

    Kann man gewisse Wochentage in einem bestimmten Zeitraum errechnen?

    Wenn ich zum Beispiel alle Mittwoch als Datumanzeige im Zeitraum von August 2010 bis Juni 2011 ermitteln und darstellen möchte.

    Stehe da auf dem Schlach, kann mir jemand einen Tip geben. Danke
    Zuletzt geändert von sepp; 19.04.2011, 16:05.

  • #2
    Hallo,

    strtotime ist sehr mächtig, probier mal z. B.

    PHP-Code:
    echo date('Y-m-d'strtotime('2011-04-11 next monday')); 
    das liefert dir z. B. den nächstmöglichen Montag nach dem 11. April (also gestern).

    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


    • #3
      Du ermittelst den ersten Mittwoch in August 2010 und addierst dann immer 7 Tage, bis du das Ende von Juni 2011 erreicht hast.

      Kommentar


      • #4
        AmicaNoctis:
        Spannende funktion ich lese mir einmal das Manuel durch.

        h3ll:
        Klingt logisch, wird aber zu Problem bei z.Bsp. Schaltjahren.

        Kommentar


        • #5
          Zitat von sepp Beitrag anzeigen
          Klingt logisch, wird aber zu Problem bei z.Bsp. Schaltjahren.
          Öhm, wieso? In Schaltjahren hat die Woche trotzdem 7 Tage.
          [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
            Zitat von sepp Beitrag anzeigen
            Klingt logisch, wird aber zu Problem bei z.Bsp. Schaltjahren.
            Welches Problem? Eine Woche hat immer 7 Tage, auch in Schaltjahren.

            Kommentar


            • #7
              Ja, aber der Februar hat nicht immer 29 Tage!

              Sprich wenn ich immer mit 7 Addiere muss ich je monat nur addieren wenn < 30 oder 31 im Feb 29 und im Schaltjahr 28 nur wie kann ich das Schaltjahr ermitteln?

              Kommentar


              • #8
                Zitat von sepp Beitrag anzeigen
                Ja, aber der Februar hat nicht immer 29 Tage!

                Sprich wenn ich immer mit 7 Addiere muss ich je monat nur addieren wenn < 30 oder 31 im Feb 29 und im Schaltjahr 28 nur wie kann ich das Schaltjahr ermitteln?
                Du musst gar nichts. Das macht doch PHP.

                PHP-Code:
                $date = new DateTime('2011-02-25');
                $date->modify('+1 week');
                echo 
                $date->format('Y-m-d');
                // 2011-03-04

                $date = new DateTime('2012-02-25');
                $date->modify('+1 week');
                echo 
                $date->format('Y-m-d');
                // 2012-03-03 
                Zuletzt geändert von h3ll; 19.04.2011, 16:31.

                Kommentar


                • #9
                  Du hast dich offenbar noch gar nicht mit Datumsberechnung beschäftigt. Wenn du 7 Tage addierst, machst du das natürlich nicht auf dem menschenlesbaren Datum sondern auf dem Unix-Timestamp, indem du ihn mit 7*24*60*60 addierst. Oder du nutzt wieder strtotime und übergibst "+7 day".
                  [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


                  • #10
                    Zitat von AmicaNoctis Beitrag anzeigen
                    Du hast dich offenbar noch gar nicht mit Datumsberechnung beschäftigt. Wenn du 7 Tage addierst, machst du das natürlich nicht auf dem menschenlesbaren Datum sondern auf dem Unix-Timestamp, indem du ihn mit 7*24*60*60 addierst.
                    _Dann_ hast du aber ein Problem, weil nicht jeder Tag 24 Stunden hat.

                    Kommentar


                    • #11
                      Zitat von h3ll Beitrag anzeigen
                      _Dann_ hast du aber ein Problem, weil nicht jeder Tag 24 Stunden hat.
                      Jetzt geht das wieder los. Die Schaltsekunde wird so eingefügt, als wäre sie nicht eingefügt worden. Die Schaltsekunde hat den gleichen UNIX-Timestamp wie die Sekunde davor. Die Vergangenheit wird dadurch geringfügig verändert, aber nicht die Zukunft. UNIX-Timestamps arbeiten immer mit einem Tag von 86400 Sekunden.
                      [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


                      • #12
                        Zitat von AmicaNoctis Beitrag anzeigen
                        Jetzt geht das wieder los. Die Schaltsekunde wird so eingefügt, als wäre sie nicht eingefügt worden. Die Schaltsekunde hat den gleichen UNIX-Timestamp wie die Sekunde davor. Die Vergangenheit wird dadurch geringfügig verändert, aber nicht die Zukunft.
                        Das Problem ist nicht die Schaltsekunde sondern die Winter-/Sommerzeit.

                        Zitat von AmicaNoctis Beitrag anzeigen
                        UNIX-Timestamps arbeiten immer mit einem Tag von 86400 Sekunden.
                        Das Problem ist auch nicht der UNIX-Timestamp, sondern der Zeitpunkt, wo du den Timestamp in ein lesbares Datum konvertierst. Hier wird der Fehler dann ersichtlich.
                        Zuletzt geändert von h3ll; 19.04.2011, 16:51.

                        Kommentar


                        • #13
                          Zitat von h3ll Beitrag anzeigen
                          Das Problem ist nicht die Schaltsekunde sondern das Schaltjahr.
                          Auch da hat jeder Tag 86400 Sekunden, also 24 Stunden. Ich versteh nicht, was du willst. Gerade eben schriebst du, dass nicht jeder Tag 24 Stunden hat. Jetzt redest du von Schaltjahren. Bitte um Aufklärung.

                          Zitat von h3ll Beitrag anzeigen
                          Hier wird der Fehler dann ersichtlich.
                          Dann zeig mir das mal bitte.
                          [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


                          • #14
                            PHP-Code:
                            date_default_timezone_set('Europe/Vienna');

                            $date  strtotime('2011-10-24');
                            $date += 86400// add 7 days

                            echo date('Y-m-d'$date);
                            // 2011-10-30 
                            24. Oktober + 7 Tage = 30. Oktober ???

                            PHP-Code:
                            date_default_timezone_set('Europe/Vienna');

                            $date = new DateTime('2011-10-24');
                            $date->modify('+7 days');

                            echo 
                            $date->format('Y-m-d');
                            // 2011-10-31 

                            Kommentar


                            • #15
                              Dieses Problem hat weder mit Schaltsekunden noch mit Schaltjahren zu tun, sondern ausschließlich mit dem zwischenzeitlichen Verlust der Zeitzoneninformation. Du hast mich überzeugt, dass es sicherer ist, mit "+7 days" zu arbeiten als mit Addition von Sekunden, aber deine Begründung hat mir zuerst nicht gefallen, weil sie vollkommen absurd klang (/war).

                              Wenn man dein Beispiel mit "Y-m-d Z" formatiert, sieht man das UTC Offset, das PHP zugrunde legt.

                              Ein Tag hat aber dennoch 24 Stunden, was ich mit enormer Beruhigung als bestätigt sehe
                              [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

                              Lädt...
                              X