PHP Schaltjahr

  • Hi, ich will für verschiedene jahre schauen, ob sie schaltjahre sind und dann den februar entsprechend anpassen:

    leider funzt das nicht... $feb ist immer gleich 0...


    Noch eine andere Frage:
    Gibt es eine Funktion, um zu schauen, ob eine Zahl Komastellen hat? also 28.463 wäre FALSE, 7 hingegen TRUE.

    danke!

  • Code
    $jahr = 2004;
    
    
    $timestamp = strtotime("10 September ".$jahr);
    $schaltjahr = date("L", $timestamp);
    if(intval($schaltjahr == 0)) { $feb = 28; } else { $feb = 29; }
    
    
    echo "der februar des jahres ".$jahr." hat ".$feb." tage";

    Zu 2: is_int()

  • Moin!

    Das kann so nichts werden, denn du mußt mit dem Jahr auch Monat und Tag übergeben, also z.B.

    Code
    $jahr = "20 January 2002";

    Wenn du nur ermitteln willst, ob sich eine bestimmte Jahreszahl um ein Schaltjahr handelt, dann kannst du das viel einfacher erreichen: alle Jahre, die sich ohne Rest durch 4 teilen lassen, sind Schaltjahre.

    Code
    $jahr = 2002;
    is_int($jahr/4) ? $feb=29:$feb=28;
    echo "der Februar hat $feb Tage";
    Zitat von mmaisch

    Noch eine andere Frage:
    Gibt es eine Funktion, um zu schauen, ob eine Zahl Komastellen hat? also 28.463 wäre FALSE, 7 hingegen TRUE.

    Code
    echo is_int(28.463)." - ".is_int(7);


    Das ergibt im ersten Fall false (es wird nichts angezeigt) und im zweiten Fall true (es wird eine 1 angezeigt).

    G.a.d.M.

    Ronald

  • fast, es gibt noch ausnahme-regelungen, auch wenns noch ne weile dauert bis es wieder eintritt !!


    wikipedia:
    Ein Schaltjahr ist alle vier Jahre (1992 und 1996 waren z.B. Schaltjahre)

    alle hundert Jahre nicht (1700 und 1800 waren keine Schaltjahre)

    und alle vierhundert Jahre doch (2000 war doch ein Schaltjahr)
    also:

    if(($jahr % 4 == 0 && $jahr % 100 != 0) || $jahr % 400 == 0) {
    $feb = 29;
    }
    esle {
    $fed = 28
    }

    Sei immer du selbst. Außer du kannst Batman sein. Sei immer Batman!

  • @ christopher, ronald: danke für den tipp
    @ BendOr: merci, hab es so übernommen!