<form action="alter.php" method="post"> //Das Eingabeformular
Tag: <input type="text" name="tag" size="2">
Monat: <input type="text" name="monat" size="2">
Jahr: <input type="text" name="jahr" size="4">
<input type="submit" name="berechnen" value="Berechnen">
</form>
<?
if($berechnen)
{
$heute_tag=date("d"); //Aktueller Tag
$heute_monat=date("m"); //Aktueller Monat
$heute_jahr=date("Y"); //Aktuelles Jahr
$jahr_geb=$heute_jahr-$jahr; //Geburtsjahr vom Aktuellen Jahr Subtrahieren
if (mktime(0,0,0,$heute_monat,$heute_tag,$heute_jahr) < mktime(0,0,0,$monat,$tag,$heute_jahr))
//Abfrage ob im aktuellen Jahr der Geburtstag schon überschritten wurde
{
$jahr_geb--; //Wenn nicht, dann ein Jahr abziehen
}
echo $jahr_geb //Ausgabe
}
?>
<script language="JavaScript">
function calculate(year, month, day) {
var monthname = new Array(12);
monthname[1] = "January";
monthname[2] = "February";
monthname[3] = "March";
monthname[4] = "April";
monthname[5] = "May";
monthname[6] = "June";
monthname[7] = "July";
monthname[8] = "August";
monthname[9] = "September";
monthname[10] = "October";
monthname[11] = "November";
monthname[12] = "December";
/* Wochentag berechnen und ausgeben */
var bday = " "+ year +", "+monthname[month] + ", "+day;
var bday = new Date(bday);
/* Differenz bilden */
bday = bday.getTime();
var now = new Date();
now = now.getTime();
var diff = now - bday;
/* Jahre, Monate, Tage ausrechnen */
var years = (diff - (diff % 31557600000)) / 31557600000;
diff = diff - (years * 31557600000);
var months = (diff - (diff % 2628000000)) / 2628000000;
diff = diff - (months * 2628000000);
var days = (diff - (diff % 86400000)) / 86400000;
if(days > -1) {
if (years != 0) {
var age = "Mein aktuelles Alter beträgt heute: " + years + " Jahr";
if (years > 1) age = age + "e";
}
if (months != 0) {
age = age + ", " + months + " Monat";
if (months > 1) age = age + "e";
}
if (days != 0) {
age = age + " und " + days + " Tag";
if (days > 1) age = age + "e";
}
}
age = age + "!";
return age;
}
</script>
/*Geburtsdatum: */
<script language="JavaScript"> document.write(calculate(JAHR,MONAT,TAG)); </script>
<?php
$unixzt = time(); //aktueller Zeitstempel
$unixzt1 = mktime(00,00,00,04,05,1989); //Zeitstempel an Geburtstag
$datum = date("d.m.Y",$unixzt1); //Kontrollumrechnung Zeitstempel ->Datum
echo $datum." = $unixzt1"; //Ausgabe Kontrollwert
$momjahr= date("Y",$unixzt); //Momentanes Jahr
$mommon= date("m",$unixzt); //Momentaner Monat
$momtag= date("d",$unixzt); //Momentaner Tag
$gebjahr= date("Y",$unixzt1); //Geburtsjahr
$gebmon= date("m",$unixzt1); //Geburtsmonat
$gebtag= date("d",$unixzt1); //Geburtstag
$jahr=$momjahr-$gebjahr; //Differenz zwischen aktuellem Jahr und Geb. Jahr = aktuelles alten in Jahren
$mon=$mommon-$gebmon; //s.o.
$tag=$momtag-$gebtag; //s.o.
echo "<br />";
echo "Ich bin ".$jahr." Jahre, ".$mon." Monate und ".$tag." Tage alt."; //Ausgabe aktuelles Alter
?>
<?php
$unixzt = time(); //aktueller Zeitstempel
$unixzt1 = mktime(00,00,00,04,05,1989); //Zeitstempel an Geburtstag
$datum = date("d.m.Y",$unixzt1); //Kontrollumrechnung Zeitstempel ->Datum
echo $datum." = $unixzt1"; //Ausgabe Kontrollwert
$momjahr= date("Y",$unixzt); //Momentanes Jahr
$mommon= date("m",$unixzt); //Momentaner Monat
$momtag= date("d",$unixzt); //Momentaner Tag
$gebjahr= date("Y",$unixzt1); //Geburtsjahr
$gebmon= date("m",$unixzt1); //Geburtsmonat
$gebtag= date("d",$unixzt1); //Geburtstag
$jahr=$momjahr-$gebjahr; //Differenz zwischen aktuellem Jahr und Geb. Jahr = aktuelles alten in Jahren
$mon=$mommon-$gebmon; //s.o.
$tag=$momtag-$gebtag; //s.o.
//Modifikation
if($tag<0)
{
$mon--; //Bei negativen Tagen, einen Monat abziehen
$a=mktime(00,00,00,$mommon,$momtag,$momjahr)-mktime(00,00,00,$mommon-1,$gebtag,$momjahr); //Berechnung der (Rest)Tage als Timestamp
$tag=$a/86400; //Umrechnung in Tage
}
//Modifikation Ende
echo "<br />";
echo "Ich bin ".$jahr." Jahre, ".$mon." Monate und ".$tag." Tage alt."; //Ausgabe aktuelles Alter
?>
Das mit den Negativen Tagen klappt. Nur wie ist das bei negativen Monaten.
Hab z.B. das Geburtsdatum 27.10.2005. Heute ist der 5.3.2007.
Kriege da jetzt 2 Jahre, -8 Monate und 6 Tage raus.
Normal müßte da ja 1 Jahr, 4 Monate und 6 Tage rauskommen.
Wo muß man da den Code modifizieren????