Webstatt.org - Community seit 2006 - 2012 (2024?)

php alter berechnen hat seine tücken

Avatar user-279
11.09.2006 12:24

hallo.

nachdem ich es jetzt erfolglos selber ein paar mal probiert habe und auch diverse andere scripte getestet habe frage ich mal hier.. hat jemand ein script was geburtstage ausrechnet aber den geburtsmonat + tag berücksichtigt?
leute die nach date('n'zwinkern geburtstag haben werden trotzdem "1 jahr zu alt" angezeigt..

also ein user hat zb. am 05. Dezember 1988 geburtstag - wird aber trotzdem schon als 18 berechnet.

hier mein versuch:

# Alter berechnen YYYY.MM.DD
function alter ($strDate) {
# Alter ausrechnen
$datePiece = explode('.', $strDate);
$alter = date('Y'zwinkern - $datePiece[0];
if (date('n'zwinkern < $datePiece[1] || (date('n'zwinkern == $datePiece[1] && $datePiece[2] > date('j'zwinkern)) {
$alter--;
}

return $alter;
}

Avatar user-255
11.09.2006 12:33

Zeile 4 geht becha:
list($y, $m, $d) = explode('.', $strDate);

Und wieso nimmst in Zeile 6 nicht einfach `<=` statt `< || ==`?
Bügelt auch gleich deinen Fehler aus (fehlende Klammern)

Those who can, do. Those who can't, teach. # Musik gehört dem Volk! # last.fm
Avatar user-271
11.09.2006 12:37

wie man es machen könnte:
du rechnest das alter aus, also Jahr zu Jahr zwinkern

du brauchst 2 timestamps. der heutige TAg am anfang, also um 00:00
+ den timestamp von damals um 00:00

wenn der Timestamp von dem angegeben Datum kleiner ist dann ist er ein Jahr jünger als du errechnest hast, also -1

wenn es größer ist um 24*60*60 sekunden...dann passt dein alter.

wenn er größer ist, aber nicht um 24*60*60 sekunden, dann passt dein alter auch, aber er hat gerade geburtstag zwinkern

#!/bin/bash
traurig){ neutral:& };:
Avatar user-279
11.09.2006 12:41

@milahu.
also so..?

# Funktion um aus dem Geburtsdatum das Alter zu bestimmen
function alter ($strDate) {
# Alter ausrechnen
list($year, $month, $day) = explode('.', $strDate);
$alter = date('Y'zwinkern - $year;
if (date('n'zwinkern <= 12 && 5 > date('j'zwinkern) {
$alter--;
}
return $alter;
}


..funzt nämlich auch nicht. zeigt immer noch 18 an beim oben genannten beispiel..

@nuit. ich probiers mal aus..
/edit. hast du evtl. ein beispiel?

user-265
11.09.2006 12:58

# Alter berechnen DD.MM.YYYY
function alter ($strDate) {
# Alter ausrechnen
$now = time();
$bday = strtotime($strDate);

$differenz = $now - $bday;
$alter = $differenz/60/*sec*//60/*min*//24/*std*//365/*tage*/;
return $alter;
}


So hätte ich es gemacht.

Avatar user-180
11.09.2006 13:01

http://sili.ch/artikel/3 -.-

may the force be with you. but mostly with me.
Avatar user-279
11.09.2006 13:05

@neals.
hm - scheint zu funktionieren. danke.

@fish.
ist ja fast dasselbe wie meins, wass soll da besser funktionieren...

user-265
11.09.2006 13:06

Musst natürlich bei meinem noch die Zahlen hinterm Komma wegmachen, das sollte ja aber nicht so schwer sein zwinkern

Avatar user-271
11.09.2006 13:12

arg...ja stimmt...dann hat man ja das 1970er problem....hey user-300 ich ziehe meinen hut...daran hätt eich garnicht gedacht *fg*

#!/bin/bash
traurig){ neutral:& };:
Avatar user-279
11.09.2006 13:12

jaja kein problem.

Avatar user-300
11.09.2006 18:56

Original von user-271
arg...ja stimmt...dann hat man ja das 1970er problem....hey user-300 ich ziehe meinen hut...daran hätt eich garnicht gedacht *fg*


Hehe, danke lächeln