Norbert: Nächster Monat, Nächstes Jahr

Hallo,
wenn mir

  
$Monat = date("m",time());  
$Jahr = date("Y",time());  

den aktuellen Monat und das aktuelle Jahr ausspuckt, wie kann ich dann, ausgehend vom aktuellen Datum auf den nächsten Monat (und bei Jahreswechseln natürlich entsprechend auch das nächste Jahr) zugreifen?

Gruß, Norbert

  1. Moin!

    Hallo,
    wenn mir

    $Monat = date("m",time());
    $Jahr = date("Y",time());

    
    > den aktuellen Monat und das aktuelle Jahr ausspuckt, wie kann ich dann, ausgehend vom aktuellen Datum auf den nächsten Monat (und bei Jahreswechseln natürlich entsprechend auch das nächste Jahr) zugreifen?  
      
    Das DateTime-Objekt benutzen. Wenn du nur genau EIN Objekt benutzt, kann es dir auch nicht passieren, dass du den Monat Dezember und das Jahr vom darauffolgenden Januar bekommst - so wie es dir in deinem aktuellen Code passieren kann.  
      
      
    ~~~php
    $nextMonth = new DateTime('next month');  
      
    $Monat = $nextMonth->format('m');  
    $Jahr = $nextMonth->format('y');  
      
    var_dump($Monat, $Jahr);
    

    Ist getestet und für funktionierend befunden.

    - Sven Rautenberg

    1. Wo wir schonmal dabei sind :)

      und jetzt noch einen Code um immer den 01. eines Monat zu bekommen :) - danke.

      Gruß
      vordernder
      T-Rex

      1. Tach!

        und jetzt noch einen Code um immer den 01. eines Monat zu bekommen :) - danke.

        strtotime('first day of next month');

        oder in modern:

        $date = new DateTime('first day of next month');

        dedlfix.

        1. Moin!

          Tach!

          und jetzt noch einen Code um immer den 01. eines Monat zu bekommen :) - danke.

          strtotime('first day of next month');

          oder in modern:

          $date = new DateTime('first day of next month');

          Geht natürlich auch kürzer:

          $FirstDay = '01';  
          
          

          :)

          Spannend wird's natürlich bei 'second monday of previous month' und ähnlichem.

          - Sven Rautenberg

          1. Tach!

            $date = new DateTime('first day of next month');
            Geht natürlich auch kürzer:

            $FirstDay = '01';

            
            > :)  
              
            Ja ja ja, und nun bilde bitte aus dieser 01 den Wochentag dazu.  
              
            
            > Spannend wird's natürlich bei 'second monday of previous month' und ähnlichem.  
              
            Na, das funktioniert doch einwandfrei. Ergibt aktuell den 10. Juni 2013.  
              
              
            dedlfix.
            
          2. Geht natürlich auch kürzer:

            $FirstDay = '01';

            
            >   
            > :)  
              
            Die Zeit- und Datumsrechnung ist ja sowas von kompliziert ...  
              
            Zwischenzeitlich wird mal eine Stunde hinzu- oder weggefügt, wirklich kaum zu durchschauen.  
              
            Fängt wirklich jeder Monat mit dem Tag 1 an? Auch in Schaltjahren bei Vollmond? Ich kann's nicht glauben.  
              
            Gast
            
            1. Hallo,

              Fängt wirklich jeder Monat mit dem Tag 1 an? Auch in Schaltjahren bei Vollmond? Ich kann's nicht glauben.

              ja, ich glaub' schon. :-)
              Ich hätte auch lieber eine mit 0 beginnende Zählung ...

              Ciao,
               Martin

              --
              Alleine sind wir stark ...
              gemeinsam sind wir unausstehlich!
              Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
    2. $Monat = $nextMonth->format('m');
      $Jahr = $nextMonth->format('y');

      var_dump($Monat, $Jahr);[/code]

      Ist getestet und für funktionierend befunden.

      • Sven Rautenberg

      Hi Sven,

      danke, kann man die führende Null bei den Monaten auch weglassen?

      Norbert

      1. Moin!

        $Monat = $nextMonth->format('m');
        $Jahr = $nextMonth->format('y');

        var_dump($Monat, $Jahr);[/code]

        Ist getestet und für funktionierend befunden.

        • Sven Rautenberg

        Hi Sven,

        danke, kann man die führende Null bei den Monaten auch weglassen?

        Hast du doch bei deinem Code auch nicht. ;)

        Der Formatierungsparameter ist für die date()-Funktion und das DateTime-Objekt identisch.

        Aber ich habe dir ein kleines y untergejubelt, korrekt wäre natürlich das große Y für's Jahr.

        Insofern: Lies die Doku von date(). Und DateTime::format().

        - Sven Rautenberg

  2. Hallo,

    wie kann ich dann, ausgehend vom aktuellen Datum auf den nächsten Monat (und bei Jahreswechseln natürlich entsprechend auch das nächste Jahr) zugreifen?

    indem du einen Monat bzw. ein Jahr addierst.
    Das Beispiel auf php.net zeigt wie es für eine Woche funktioniert.

    Gruß
    Kalk

    1. Om nah hoo pez nyeetz, Tabellenkalk!

      wie kann ich dann, ausgehend vom aktuellen Datum auf den nächsten Monat (und bei Jahreswechseln natürlich entsprechend auch das nächste Jahr) zugreifen?

      indem du einen Monat bzw. ein Jahr addierst.
      Das Beispiel auf php.net zeigt wie es für eine Woche funktioniert.

      Das halte ich (ungetestet) für problematisch. Beim 31. Januar landet man vielleicht im März.

      Matthias

      --
      Der Unterschied zwischen Java und JavaScript ist größer als der zwischen Kamas und Kamasutra.