Ankündigung

Einklappen
Keine Ankündigung bisher.

Datum bestimmter Wochentage (1./3. Samstag) dynamisch ausgeben

Einklappen

Neue Werbung 2019

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

  • Datum bestimmter Wochentage (1./3. Samstag) dynamisch ausgeben

    Hallo,

    ich suche nach einer Möglichkeit, das Datum des ersten Samstags im Monat Mai und 3. Samstags im Oktober des jeweils aktuellen Jahres dynamisch ausgeben zu lassen (Format j. F). Hat jemand eine Idee, wie ich das anstellen kann?

    Danke für eure Hilfe!


  • #2
    In etwa so:
    echo date("Y-m-d", strtotime("next Saturday", strtotime(date("Y-05-01"))));

    Also "1. Mai", dann "nächsten Samstag". Musst mal schauen, wenn der 1. Mai bereits ein Samstag ist ob es dann auch noch klappt; notfalls den 30. April als Referenz nehmen. Dasselbe mit Oktober, nur eben mit strtotime("+2 week", $timestamp).

    Gruß

    PS: Geht bestimmt schöner mit DateTime und Konsorten, das nur die oldschool-Variante
    "Mein Name ist Lohse, ich kaufe hier ein."

    Kommentar


    • #3
      Zitat von Chriz Beitrag anzeigen
      PS: Geht bestimmt schöner mit DateTime und Konsorten, das nur die oldschool-Variante
      aber gewiss doch!
      PHP-Code:
      echo date_create("first saturday of may")->format(' j. F');
      echo 
      date_create("third saturday of october")->format(' j. F'); 
      PHP-Klassen auf github

      Kommentar


      • #4
        Nicht schlecht - auch wenn ich mit meinem Code eigentlich immer ans Ziel komm bin ich da mittlerweile out-dated was die Datumsfunktionen angeht
        "Mein Name ist Lohse, ich kaufe hier ein."

        Kommentar


        • #5
          Am Rande bemerkt arbeitet strtotime mit den relativen Formaten genau so wie DateTime und kennt auf 64-Bit-Systemen auch kein Jahr-2038-Problem mehr.
          strtotime wird vielleicht bald nicht mehr so out sein...
          PHP-Klassen auf github

          Kommentar


          • #6
            Zitat von jspit Beitrag anzeigen
            aber gewiss doch!
            PHP-Code:
            echo date_create("first saturday of may")->format(' j. F');
            echo 
            date_create("third saturday of october")->format(' j. F'); 
            Das es so unkompliziert geht, habe ich gar nicht gedacht. Hab mir die ganze Zeit überlegt, wie ich die Bedingung da rein bekomme.

            Allerdings habe ich jetzt das Problem, dass der Monat auf englisch und nicht auf deutsch ausgegeben wird. Habe es mit

            PHP-Code:
            strftimesetlocale(LC_TIME"de_DE");
            echo 
            strftime("%B"(date_create("third saturday of october")->format(' j. F')); 
            probiert, aber da stimmt irgendwas nicht...

            Kommentar


            • #7
              Zitat von djzwerg Beitrag anzeigen

              PHP-Code:
              strftimesetlocale(LC_TIME"de_DE");
              echo 
              strftime("%B"(date_create("third saturday of october")->format(' j. F')); 
              probiert, aber da stimmt irgendwas nicht...
              Ja, die 2.Zeile sollte dir einen Parse error anzeigen, sofern dein error_reporting aktiviert ist.
              Könnte jetzt hier die Lösung hinknallen, das hilft dir jedoch nicht wirklich.
              Schau dir an, welche Parameter strftime benötigt und was du mit obigen Code da liefern möchtest.
              Die Funktionalität von setlocale und strftime sind zudem systemabhängig.

              Alternativ denke über die sogenannte Arraylösung nach, die auch ich vorziehe. Alle deutschen Monatsnamen in ein Array packen und über die Monatsnummer zugreifen. Damit bist du systemunabhängig.

              Variante 3: IntlDateFormatter. Hierfür sollten fundierte Kenntnisse der OOP in PHP vorhanden sein.
              PHP-Klassen auf github

              Kommentar

              Lädt...
              X