Alter einer Person berechnen
Gunnar
- php
Hallo,
wie kann ich am einfachsten das Alter einer Person berechnen, wenn ich den Geburtstag und das heutige Datum habe.
$gebTag = '1973-03-11';
$heute = '2002-07-28';
Für Hilfe wäre ich sehr dankbar.
Gunnar
PS: Ich bräuchte das Alter in Jahren!
Hallo,
wie kann ich am einfachsten das Alter einer Person berechnen, wenn ich den Geburtstag und das heutige Datum habe.
$gebTag = '1973-03-11';
$heute = '2002-07-28';
Für Hilfe wäre ich sehr dankbar.
Gunnar
Aloha!
wie kann ich am einfachsten das Alter einer Person berechnen, wenn ich den Geburtstag und das heutige Datum habe.
$gebTag = '1973-03-11';
$heute = '2002-07-28';
PS: Ich bräuchte das Alter in Jahren!
Rechne das Datum jeweils in eine computertaugliche Zeit um, beispielsweise in Sekunden ab einem festen Zeitpunkt, subtrahiere beide voneinander, und rechne die resultierenden Sekunden wieder um in Jahre.
Helfende Funktionen in PHP zur Datumsbearbeitung :
strtotime() http://www.php.net/manual/de/function.strtotime.php:
Umwandlung eines Datums in Sekunden (Unix-Timestamp)
date() http://www.php.net/manual/de/function.date.php
Umwandlung eines Unix-Timestamp in ein Datum.
Wenn du dich außerhalb des von PHP unterstützten Zeitraumes bewegst (Windows: 1970-2038, Unix: 1901-2038), dann mußt du wohl oder übel deine eigenen Zeitrechnungsfunktionen schreiben.
- Sven Rautenberg
Hallo,
wie kann ich am einfachsten das Alter einer Person berechnen, wenn ich den Geburtstag und das heutige Datum habe.
$gebTag = '1973-03-11';
$heute = '2002-07-28';
Unter Nutzung von getdate() und mktime() kann das so geloest werden:
<?php
$gebTag='1973-03-11';
$heute='2002-07-28';
$gebjahr=getdate(mktime(0,0,0,intval(substr($gebTag,5,2)),intval(substr($gebTag,8,2)),intval(substr($gebTag,0,4))));
$aktjahr=getdate(mktime(0,0,0,intval(substr($heute,5,2)),intval(substr($heute,8,2)),intval(substr($heute,0,4))));
$alter=$aktjahr[year]-$gebjahr[year];
print "Alter: ".$alter; // --> 29
?>
MfG, Thomas
[nachtrag/Korrektur:]
Mein erster Versuch ergab nur die direkte Differenz der Jahreszahlen, d. h. z. B. einen Tag vor dem Geburtstag ergab sich bereits das neue Alter.
So sollte es besser klappen:
<?php
$gebTag='1973-03-11';
$heute='2002-07-28';
$gebdate=mktime(0,0,0,intval(substr($gebTag,5,2)),intval(substr($gebTag,8,2)),intval(substr($gebTag,0,4)));
$aktdate=mktime(0,0,0,intval(substr($heute,5,2)),intval(substr($heute,8,2)),intval(substr($heute,0,4)));
$diff=getdate($aktdate-$gebdate);
$alter=$diff[year]-1970;
print "Alter: ".$alter; // --> 29
?>
MfG, Thomas
hallo,
Ich habe das mal ausprobiert, aber warum verechnet sich meine lösung um ein Jahr
http://mitglied.lycos.de/djwoelk3/djwoelk/geb1.php
hier der code:
geb1.php:
<html>
<body>
<form method="POST" action="geb2.php">
<div align="left">
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="760">
<tr>
<td width="72"></td>
<td width="139"><font size="2">Dein Geburtsdatum</font></td>
<td width="549">
<input type="text" name="jahr" size="4" value="Jahr">-<select size="1" name="monat">
<option>01</option>
<option>02</option>
<option>03</option>
<option>04</option>
<option>05</option>
<option>06</option>
<option>07</option>
<option>08</option>
<option>09</option>
<option>10</option>
<option>11</option>
<option>12</option>
</select>-<select size="1" name="tag">
<option>01</option>
<option>02</option>
<option>03</option>
<option>04</option>
<option>05</option>
<option>06</option>
<option>07</option>
<option>08</option>
<option>09</option>
<option>10</option>
<option>11</option>
<option>12</option>
<option>13</option>
<option>14</option>
<option>15</option>
<option>16</option>
<option>17</option>
<option>18</option>
<option>19</option>
<option>20</option>
<option>21</option>
<option>22</option>
<option>23</option>
<option>24</option>
<option>25</option>
<option>26</option>
<option>27</option>
<option>28</option>
<option>29</option>
<option>30</option>
<option>31</option>
</select></td>
</tr>
<tr>
<td width="72"></td>
</tr>
<tr>
<td width="72"> </td>
<td width="139"> </td>
<td width="549"><input type="submit" value="Alter Berechnen"></td>
</tr>
</table>
</div>
</form>
</html>
</body>
---------
geb2.php:
<?php
$gebTag=$jahr.$monat.$tag;
$heute='2002-07-28';
$gebdate=mktime(0,0,0,intval(substr($gebTag,5,2)),intval(substr($gebTag,8,2)),intval(substr($gebTag,0,4)));
$aktdate=mktime(0,0,0,intval(substr($heute,5,2)),intval(substr($heute,8,2)),intval(substr($heute,0,4)));
$diff=getdate($aktdate-$gebdate);
$alter=$diff[year]-1970;
print "Alter: ".$alter;
?>
-------
Danke
Hallo,
Ich habe das mal ausprobiert, aber warum verechnet sich meine lösung um ein Jahr
Vermutlich hast Du ein Geburtsjahr vor 1970 angegeben und meine Loesung basiert auf den Datums-/Zeitfunktionen, die ihre Basis auf den 01.01.1970 00:00:00 beziehen.
...
$diff=getdate($aktdate-$gebdate);
^^^
_Nach_ dieser Zeile mal aendern in:
$gebjahr=intval(substr($gebTag,0,4));
if($gebjahr<1970) $alter=$diff[year]-$gebjahr;
else $alter=$diff[year]-1970;
print "Alter: ".$alter;
MfG, Thomas
Ok habe ich gemacht
http://mitglied.lycos.de/djwoelk3/djwoelk/geb1.php
geht auch !!
nur könnte man es irgendwie hinbekommen das sich das heutioge datum automatisch in $heute einträgt ?
Hallo,
nur könnte man es irgendwie hinbekommen das sich das heutioge datum automatisch in $heute einträgt ?
$heute=date("Y-m-d",time());
MfG, Thomas
Hallo,
$gebTag=$jahr.$monat.$tag;
Diese Zeile sollte so lauten:
$gebTag=$jahr."-".$monat."-".$tag;
weil sonst die Stringzerlegung nicht klappt.
MfG, Thomas
Hi Gunnar,
wie kann ich am einfachsten das Alter einer Person
berechnen, wenn ich den Geburtstag und das heutige
Datum habe.
$gebTag = '1973-03-11';
$heute = '2002-07-28';
eine einfache - und von externen Modulen unabhängige
1. Trenne beide Datumswerte in das Jahr und den Rest.
2. Subtrahiere Geburtsjahr von aktuellem Jahr.
3. Führe einen String-Vergleich auf den Rest durch:
a) Ist dort der Wert von "heute" größer als der des
Geburtsjahres, hast Du schon in 2. Dein Ergebnis,
b) andernfalls mußt Du davon noch 1 abziehen.
Schritt 3 prüft, ob der Geburtstag im aktuellen Jahr
bereits war oder noch nicht.
Viele Grüße
Michael