ilch Forum » Ilch Clan 1.1 » Fehlersuche und Probleme » Geburtstag und Schaltjahre

Geschlossen
  1. #1
    User Pic
    Cmdr. b0b Mitglied
    Registriert seit
    30.10.2008
    Beiträge
    50
    Beitragswertungen
    0 Beitragspunkte
    Hallo,

    auf unserer HP wir das Alter falsch berechnet.

    Ich denke es liegt hieran:

    	if($row['gebdatum'] !== "0000-00-00"){
    		$gebdatum = date('d.m.Y',strtotime($row['gebdatum']));
    	    $tag   = date('d',strtotime($row['gebdatum']));
    	    $monat = date('m',strtotime($row['gebdatum']));
    	    $jahr  = date('Y',strtotime($row['gebdatum']));
    	
    	    $jetzt = mktime(0,0,0,date("m"),date("d"),date("Y"));
    	    $geburtstag = mktime(0,0,0,$monat,$tag,$jahr);
    	    $alter   = "(".intval(($jetzt - $geburtstag) / (3600 * 24 * 365)).")";


    Wenn ich das richtig sehe wird hier nur die Anzahl an Tagen berechnet, ohne auf Schaltjahre zu achten.

    Jemand eine Ahnung wie man das besser lösen kann?


    verwendete ilchClan Version: 1.1

    betroffene Homepage: externer Link
    Das Leben is zu kurz für ein langes Gesicht.
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    Cmdr. b0b Mitglied
    Registriert seit
    30.10.2008
    Beiträge
    50
    Beitragswertungen
    0 Beitragspunkte
    Ich hab es jetzt mal so versucht. Aber irgendwie ändert sich nix. Wo liegt der Fehler bei der Prüfung ob der aktuelle Tag und Monat kleiner sind als der Tag und der Monat der Geburt?

    
    
    	    $jetzt_j = mktime(0,date("Y"));
    	    $jetzt_m = mktime(0,date("m"));
              $jetzt_d = mktime(0,date("d"));
    	    $geburtsjahr = mktime(0,$jahr));
              $geburtsmonat = if(mktime (0,$monat));
              $geburtstag = mktime (0,$tag));
              $vor = ($jetzt_m < $geburtsmonat AND $jetzt_d < $geburtstag) ? (1) : (0); 
    	    $alter   = "(".intval($jetzt_j - $geburtsjahr - $vor).")";
    Das Leben is zu kurz für ein langes Gesicht.
    0 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    So sollte es gehen
    if($row['gebdatum'] !== "0000-00-00"){
    	$tmp = explode('-', $row['gebdatum']);
    	$alter = date('Y') - intval($tmp[0]) - ((date('m') < intval($tmp[1]) or (date('m') == intval($tmp[1]) and date('d') < intval($tmp[2]))) ? 1 : 0);
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  4. #4
    User Pic
    Cmdr. b0b Mitglied
    Registriert seit
    30.10.2008
    Beiträge
    50
    Beitragswertungen
    0 Beitragspunkte
    Funktioniert hervorragend. Danke für die Hilfe Mairu.
    Das Leben is zu kurz für ein langes Gesicht.
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu Fehlersuche und Probleme

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten