Alter Berechnen unter Berücksichtigung der Schaltjahre

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

  • Alter Berechnen unter Berücksichtigung der Schaltjahre

    Hallo liebes Forum!

    Der Titel sagt ja schon was ich machen will, hier ist mein Ansatz:

    PHP-Code:
    <?php

    function schaltjahr($jahr) {
        if (
    $jahr 400 == 0) {
            return 
    true;
        }
        elseif (
    $jahr == && $jahr 100 != 0)    {
            return 
    true;
        }
        else {
            return 
    false;
        }
    }

    function 
    anzahlschaltjahre($von$bis) {
        
    $j 0;
        for (
    $i $von$i <= $bis$i++) {
            if (
    schaltjahr($i)) $j++;
        }
        return 
    $j;
    }

    function 
    alter($tag$monat$jahr) {
        
       
    $jetzt mktime(0,0,0,date("m"),date("d"),date("Y"));
       
    $geburtstag mktime(0,0,0,$monat,$tag,$jahr);
       
    $geburtstag += (24 3600 366) * anzahlschaltjahre(jahrdate("Y")); 
       
    /* $altersek = (3600 * 24 * 365);
       $altersek -= (3600 * 24 * 365) * anzahlschaltjahre(jahr, date("Y"));
       $altersek += (3600 * 24 * 366) * anzahlschaltjahre(jahr, date("Y")); */
       
    $alter   intval(($jetzt $geburtstag) / (3600 24 365));

       return 
    $alter;
    }


        
    $geburtstag "07.11.1970";
        
    $altersmeta explode(".",$geburtstag);
        
        echo 
    "Du bist " alter($altersmeta[0],$altersmeta[1],$altersmeta[2]) . " Jahre alt!";
        echo 
    "<br>Schaltjahre in der Zeit: " anzahlschaltjahre($altersmeta[2], date("Y"));
    ?>
    Das was da auskommentiert ist war ein anderer ansatz von mir, dann müsste das $geburtstag += wegfallen, aber irgendwie funktoinieren beide Ansätze nicht so richtig. Wenn man das Testdatum in 08.11.1970 ändert, ist man angeblich immernoch 36. Obwohl man erst morgen 36 werden dürfte.

    Ich steig da momentan irgendwie nich hinter den Logikfehler den ich offensichtlich mache. Hat von euch vielleicht jemand ne Idee? Danke schonmal im Voraus!
    Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.

  • #2
    Na toll, der Fehler war, dass ich in der Zeile

    PHP-Code:
    $geburtstag += (24 3600 366) * anzahlschaltjahre(jahrdate("Y")); 
    bei $jahr das Dollarzeichen vergessen hab, ich idiot.

    Danke trotzdem! Kann meinetwegn jemand den Thread löschen
    Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.

    Kommentar


    • #3
      jo, und demnächst
      error_reporting(E_ALL);
      vorm posten
      PHP Forum
      Sessions in PHP
      Loginsystem mit PHP erstellen

      Kommentar

      Lädt...
      X