Mailinglisten-Archive |
> -----Original Message----- > From: hartmut_(at)_solix.wiso.Uni-Koeln.DE > [mailto:hartmut_(at)_solix.wiso.Uni-Koeln.DE]On Behalf Of Hartmut > Holzgraefe > Sent: Friday, September 08, 2000 9:20 AM > To: php_(at)_php-center.de > Subject: Re: [php] datumsdifferenz berechnen > > <? > list($tag,$monat,$jahr)=explode(".","01.07.1982"); > $time=mktime(0,0,0,$tag,$monat,$jahr); > $sec_diff = time()-$time; > $day_diff = $sec_diff / (60*60*24); > echo $day_diff; > ?> > Hallo Hartmut/Liste Wenn ich die Mail richtig verstanden habe, wollte er eher das Alter in Jahren. Ich stand vor kurzem, vor dem gleichen Problem, nämlich für die Berechnung einer KFZ-Versicherung das Alter des Autos bei Erwerb zu berechnen. Es gibt die Methode, wo sich problemlos mit Timestamps rechnen kann, aber die beachtet Schaltjahre nicht. So brachte mich ein Guru aus meiner Firma auf folgende Idee: Du nimmst das sagen wir mal Geburtsdatum, z.B. 10.7.1977 Das aktuelle Datum ist ohne Zweifel der 8.9.2000. Nun schaust du nach, ob Tag und Monat des Geburtsdatums quasi in diesem Jahr existierten. Du gehst also zum letzten Stichtag, an dem sich das Alter geändert hat, und schaust nach, wie die Differenz in Jahren aussieht und schon hast du dein Alter. Vorher musst natuerlich noch ueberpruefen, ob der letzte Stichtag nicht zufällig nach dem heutigen Datum liegt. Dies waere der Fall, wenn das Geburtstdatum wegen mir der 10.9.1977 wäre. Ist das der Fall, ziehst du vom Jahr eins ab und schon hast du den letzten Stichtag. Funktioniert wunderbar. Wenn jemand Verbesserungsvorschläge hat, sind sie gern willkommen ;) Mit diesem Code sollte die Laenge des Jahres egal sein. Hier das Stück Code, mit dem ich rechne: <?php $kaufdat = "18.2.99"; $erstzulassung = "19.2.96"; $kaufen = explode(".", $kaufdat); $zulassen = explode(".", $erstzulassung); $stichtag = array($zulassen[0], $zulassen[1], $kaufen[2]); if((gmmktime(12, 0, 0, $kaufen[1], $kaufen[0], $kaufen[2]) - gmmktime(12, 0, 0, $stichtag[1], $stichtag[0], $stichtag[2])) < 0) $stichtag = array($zulassen[0], $zulassen[1], ($kaufen[2]-1)); echo date("Y", gmmktime(12, 0, 0, $stichtag[1], $stichtag[0], $stichtag[2]))-date("Y", gmmktime(12, 0, 0, $zulassen[1], $zulassen[0], $zulassen[2])); echo $alter."<br>"; echo $stichtag[0].".".$stichtag[1].".".$stichtag[2]; ?> Gruss, Pom -- Mathias Meyer mediaworx berlin AG Fon: 030 - 27 58 02 48
php::bar PHP Wiki - Listenarchive