phpbar.de logo

Mailinglisten-Archive

[php] datumsdifferenz berechnen

[php] datumsdifferenz berechnen

Mathias Meyer Meyer_(at)_mediaworx.com
Fri, 8 Sep 2000 10:57:52 +0200


> -----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