Benedikt Hermann: Heraufinden, ob Jahr ein Schaltjahr ist.

Hallo,

wie kann ich herausfinden ob das aktuelle Jahr ein Schaltjahr ist?

Vielen Dank

Benedikt Hermann

  1. Hallo Benedikt,

    wie kann ich herausfinden ob das aktuelle Jahr ein Schaltjahr ist?

    indem man im 3. Schuljahr aufgepaßt hast oder zum Beispiel hier http://th-o.de/kalender.htm nachliest.

    HTH Robert

    1. indem man im 3. Schuljahr aufgepaßt hast oder zum Beispiel hier http://th-o.de/kalender.htm nachliest.

      Ich meine mittels PHP herausfinden!

      1. Hallo Benedikt,

        unter angegebenem Link steht u.a.
        "    * Besonderheit Schaltjahr, es gelten folgende Regeln:
              Es ist ein Schaltjahr jedes Jahr bei dem die Jahreszahl
                  o durch 4 teilbar ist und
                  o nicht durch 100 teilbar ist (also nicht 1700, 1800, 1900) oder
                  o bei dem sie durch 400 teilbar ist (2000).
        "

        Also in PHP
        if($aktuellesJahr % 4 == 0) mögliches Schaltjahr
        Jetzt das ganze noch prüfen ob das Jahr auch durch 100 teilbar ist (und aufgeht). Das ganze noch kombinieren mit der Alternative durch 4 und durch 100 teilbar (also durch 400). Und schon sind wir fertig.

        Wo war das Problem mit PHP?

        Grüße aus Würzburg
        Julian

        1. Hallo,

          if($aktuellesJahr % 4 == 0) mögliches Schaltjahr

          Warum ergiebt das Ergebnis 0, falls das aktuelle Jahr durch 4 Teilbar ist?! Steh ich irgendwie aufm Schlach.

          Jetzt das ganze noch prüfen ob das Jahr auch durch 100 teilbar ist (und aufgeht). Das ganze noch kombinieren mit der Alternative durch 4 und durch 100 teilbar (also durch 400). Und schon sind wir fertig.

          1. hi nochmal
            % ist de modulo operator, modulo ergibt null wenn die vordere Zahl durch die hintere Zahl teilbar ist, also eine natürliche zahl herauskommt, ansonsten gibt es den Rest der Division aus.
            also ist net so schwer wie es aussieht
            ulimativ
            p.s. der == operator weist nichts zu sondern vergleicht

          2. Hi,

            Man macht Ihr das kompliziert!
            In PHP gibts doch ne praktische Methode dafuer!

            Kurze Fakten;
            Ein Schaltjahr hat immer nen 29.Februar
            Daran erkennt man es glaub ich am besten.

            Code:
            <?
              $year = date(Y);
              if (checkdate(2,29,$year)) { echo $year." ist ein Schaltjahr."; }
              else { echo $year." ist kein Schaltjahr."; }
            ?>

            Mit date(Y) bekommst du das aktuelle Jahr zurueck.

            Grüße,
             DaLindi

            ---------------------------------------------------------------------
            Visit my Page! http://www.beblue.net

            1. Hi,

              Man macht Ihr das kompliziert!
              In PHP gibts doch ne praktische Methode dafuer!

              Hi,

              danke. Ist echt super einfach ;-)

        2. Holla

          Jetzt das ganze noch prüfen ob das Jahr auch durch 100 teilbar ist (und aufgeht). Das ganze noch kombinieren mit der Alternative durch 4 und durch 100 teilbar (also durch 400). Und schon sind wir fertig.

          Äh ... eine Zahl, die durch 100 ohne Rest teilbar ist ist immer auch durch 4 ohne Rest teilbar.

          Die Abfrage wäre also:

          if((($jahr % 4 == 0) && ($jahr % 100 != 0)) || ($jahr % 400 == 0))
           echo "Schaltjahr";

          Ciao,

          Harry

      2. Servus
        dann wollen wir da mal nachhelfen

        if ($jahr%4==0)
         {
           if ($jahr%100==0)
            {
              if (($jahr/100)%4==0)
                 $schaltjahr=true;
              else
                 $schaltjahr=false;
            }
           else
              $schaltjahr=true;
         }
         else
           $schaltjahr=false;

        müßte eigentlich so passen. Habs jetzt nicht ausprobiert

        Und tschüß
        Grüße aus Fellbach
        Goofy

        1. Servus
          dann wollen wir da mal nachhelfen

          Vielen Dank! Hat funktioniert.

          Bene

        2. Servus
          dann wollen wir da mal nachhelfen

          if ($jahr%4==0)
          {
             if ($jahr%100==0)
              {
                if (($jahr/100)%4==0)
                   $schaltjahr=true;
                else
                   $schaltjahr=false;
              }
             else
                $schaltjahr=true;
          }
          else
             $schaltjahr=false;

          müßte eigentlich so passen. Habs jetzt nicht ausprobiert

          Hallo zusammen,

          das Prob hatte ich schon mal vor laaanger Zeit. Da habe ich diese Formel von der PTB bekommen. Die waren so nett. Funktioniert natürlich auch.

          Ich habe dann aber herausgefunden, dass das bei der Berechnung von Datumsreferenzzahlen (der erste Tag im Jahre 1 hat den Wert 1) und der Rückrechnung ganz schön die Performance killt und da ist die billige Tabellenmethode ein enormes Tuning.

          Rechne Die also besser die paar Jahre aus, die du im Focus hast und mach Dir eine direkt indizierbare Tabelle. so von 1800 bis 2199 sind das man gerade 400 Byte oder eigentlioch ja nur 400 Bit, wenn mans unbedingt darauf anlegt.

          Gruß

          Tom

        3. Holladiri

          if ($jahr%4==0)
          {
             if ($jahr%100==0)
              {
                if (($jahr/100)%4==0)
                   $schaltjahr=true;
                else
                   $schaltjahr=false;
              }
             else
                $schaltjahr=true;
          }
          else
             $schaltjahr=false;

          Das geht auch kürzer ;-)

          if((($jahr % 4 == 0) && ($jahr % 100 != 0)) || ($jahr % 400 == 0))
           echo "Schaltjahr";

          Ciao,

          Harry

      3. Hi
        die date() dunktion sollte dir helfen. schau doch einfach mal im manual nach. www.php.net/manual/de
        Uli