Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] strtotime last - wo liegt der fehler?

Einklappen

Neue Werbung 2019

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

  • [Erledigt] strtotime last - wo liegt der fehler?

    hallo liste, folgendes problem:
    beispiel mit samstag...
    ich möchte den letzten samstag eines monats ermitteln.
    meine idee ist, erst auf den ersten tag des folgemonats zu gehen, dann zurueck auf den letzten samstag...
    wo ist der fehler?

    echo date('l', strtotime("last saturday", mktime(0,0,0,3,1,2009)));
    => Saturday

    so weit so gut, aber:
    echo date('l', strtotime("last saturday", mktime(0,0,0,4,1,2009)));
    => Friday

    aprilscherz? habt ihr eine idee?
    ps: schoenes 2009!

  • #2
    Eindeutig ein Aprilscherz, dein Code funktioniert bei mir nämlich.

    PHP-Code:
    echo date('l'strtotime("last saturday"mktime(0,0,0,3,1,2009)));
    echo 
    date('l'strtotime("last saturday"mktime(0,0,0,4,1,2009))); 
    Ausgabe:

    SaturdaySaturday

    Kommentar


    • #3
      Hallo verzauberer, und willkommen auf PHP.de!

      Du hast geschrieben, dass du den letzten Samstag eines Monats ermitteln möchtest, und ich nehme mal an, dass du damit nicht wissen möchtest, ob es "Saturday" ist, da du das ja sowieso weißt ^) In date() musst du dann wohl statt "l" was anderes benutzen. Und ich habe gemerkt, dass strtotime("last saturday"); den letzten Samstag vor einem Datum liefert, also könntest du praktisch "last saturday february 2009" an strtotime() übergeben, um den letzten Samstag des Januar zu ermitteln, "last saturday march 2009" um den des Februars zu erfahren usw. ... also immer den Monatsnamen des darauffolgenden Monats.

      Beispiel, um noch mehr zu verdeutlichen:
      PHP-Code:
      $suche = array("07.2009""08.2009""09.2009");
      foreach(
      $suche as $monat) {
         
      $tag strftime("%d"strtotime("last saturday 01.$monat"));
         echo 
      "Der letzte Samstag des Monats $monat ist am $tag.\n";

      Ausgabe:
      Code:
      Der letzte Samstag des Monats 07.2009 ist am 27.
      Der letzte Samstag des Monats 08.2009 ist am 25.
      Der letzte Samstag des Monats 09.2009 ist am 29.

      Kommentar


      • #4
        @GelaMu: Ich denke mal, da wir uns im Fortgeschrittenen Forum befinden, das er sehr wohl weiss was er tut und sich nur darüber wundert, das

        PHP-Code:
        echo date('l'strtotime("last saturday"mktime(0,0,0,4,1,2009))); 
        bei ihm Friday ausgibt, was eindeutig falsch ist und bei mir auch nicht so ist.

        Kommentar


        • #5
          Zitat von cycap Beitrag anzeigen
          @GelaMu: Ich denke mal, da wir uns im Fortgeschrittenen Forum befinden, das er sehr wohl weiss was er tut und sich nur darüber wundert, das

          PHP-Code:
          echo date('l'strtotime("last saturday"mktime(0,0,0,4,1,2009))); 
          bei ihm Friday ausgibt, was eindeutig falsch ist und bei mir auch nicht so ist.
          Ach so, daran habe ich nicht gedacht ^) Danke, cycap.

          Kommentar


          • #6
            Ich denke hier kann man wohl von einem Bug ausgehen, also vielleicht mal schauen ob es zu deiner PHP Version (Welche haste denn?) nen Bug unter PHP Bugs bei strtotime gibt. Und wenn ja, dann hoffe ich für dich, das du ein PHP Update machen kannst, ansonsten haste wohl Pech gehabt.

            Kommentar


            • #7
              @Gelamu: dein Code ist übrigens falsch, zumindest die Ausgabe, denn du zeigst ja den letzten Samstag vor dem 01.07.2009 an, damit den letzten Samstag aus 06 und nicht den letzten Samstag des Monats 07.

              Kommentar


              • #8
                Zitat von cycap Beitrag anzeigen
                @Gelamu: dein Code ist übrigens falsch, zumindest die Ausgabe, denn du zeigst ja den letzten Samstag vor dem 01.07.2009 an, damit den letzten Samstag aus 06 und nicht den letzten Samstag des Monats 07.
                Ich glaub mein Schwein pfeift Da schreibe ich extra davon und mache selber den Fehler. Erneut vielen Dank, cycap

                Kommentar


                • #9
                  Noch ne Idee: Vermutlich hängt der Bug mit der Zeitumstellung zusammen (ist ja genau der Zeitraum) und damit kommt wahrscheinlich Freitag, 23:00 Uhr raus, also 1 Stunde zu wenig. Geb doch mktime nen bisschen mehr Zeit als 0 Uhr dann sollte es funktionieren denk ich mal.

                  Kommentar


                  • #10
                    danke fuer eure antworten (jetzt schaffe ich es nicht mal mehr hier was zu schreiben... o gott...)

                    also, leider funktioniert es nach wie vor nicht - ich habe jetzt eine andere loesung - rechne jetzt vom wochentag des ersten des folgemonats die differenz der tage bis zum wochentag des startdatums - also z.b. vom 01.03.2009 (sonntag bzw. 0) auf den 28.02.2009 (samstag bzw. 6) ist die differenz "-1" - ist ein wenig gefummel wegen date('w') aber es funktioniert... oder sagen wir mal ich habe die fehler die wahrscheinlich wieder irgendwo sind, noch nicht gefunden

                    danke euch fuer eure hilfe! uebrigens soll das ganze ein eigener kalender werden und ich bin wegen des neuen kalenders in gmx bzw. web (1&1) darauf gekommen - traegt man zum beispiel dort fuer den 25.01.2009 einen termin mit monatlicher wiederholung zum gleichen wochentag ein (meint aber den "letzten" sonntag im monat - nicht den "4." sonntag) dann stimmt der februar aber im maerz hast du dann am 22.03.2009 einen termin im kalender und nicht wie gewuenscht am 29.03.2009...

                    naja... bla bla bla... danke noch einmal

                    Kommentar

                    Lädt...
                    X