Tage ermitteln

Collapse
This topic is closed.
X
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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
    Last edited by sepp; 19-04-2011, 15: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]

    Comment


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

      Comment


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

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

        Comment


        • #5
          Originally posted by sepp View Post
          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]

          Comment


          • #6
            Originally posted by sepp View Post
            Klingt logisch, wird aber zu Problem bei z.Bsp. Schaltjahren.
            Welches Problem? Eine Woche hat immer 7 Tage, auch in Schaltjahren.

            Comment


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

              Comment


              • #8
                Originally posted by sepp View Post
                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 
                Last edited by h3ll; 19-04-2011, 15:31.

                Comment


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

                  Comment


                  • #10
                    Originally posted by AmicaNoctis View Post
                    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.

                    Comment


                    • #11
                      Originally posted by h3ll View Post
                      _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]

                      Comment


                      • #12
                        Originally posted by AmicaNoctis View Post
                        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.

                        Originally posted by AmicaNoctis View Post
                        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.
                        Last edited by h3ll; 19-04-2011, 15:51.

                        Comment


                        • #13
                          Originally posted by h3ll View Post
                          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.

                          Originally posted by h3ll View Post
                          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]

                          Comment


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

                            Comment


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

                              Comment

                              Working...
                              X