Ahoj .. mam jedene velikansky problem. Dělám chat a při registraci se zadává datum narození (den, měsíc, rok) aby se poté mohl údaj použít pro výpočet věku. Datum se poté uloží do databáze pod jednu buňku, ale klidně bych to mohl udělat i tak ze buňky budou 3 pro každou hodnotu.. to až podle toho jak to vyřešim. Ale nevím, jak z toho zadaného datumu vypočítat věk uživatele (roky). Takže vlastně "24.12.2005(součastnost) - např. 22.05.1990(zadaný datum)" .Původně jsem to chtěl udělat pomocí unix timestamp, ale kdo se narodil dřív něž v roce 1970 tak měl smůlu .. můžete mi poradit? dikys :-)
coz takhle odecist od soucasneho datumu, datum narozeni? (myslim jednotlive polozky). to zas tak slozite neni
no jo ale to je neproveditelne .. kdyby bylo třeba 2.8.2006 a odecet bys od toho jednotlive datum 22.10.1996 tak by byl vysledek -20.-2.-10 a to sebou nese mnoho problemu .. musi existovat přece ještě nějaká jiná řešení
hmmmm, co je na tom za problem?
aktualni: 2.8.2006
narozeni: 22.10. 1996
1. roky: 2006 - 1996 = uzivatelovi je priblizne 10 let
2. mesic: je aktualni mesic mensi nez mesic narozeni?=>
a)[<]uzvatel jeste letos narozeniny urcite nemel(a je mu urcite 10 let)
b)[>]uzivatel uz letos narozeni mel(a je mu urcite 11 let)
c)[=]mesice si jsou rovny=>pozor uzivatel ma tenhle mesic narozeniny(provedes dalsi podminku)
je aktualni den mensi nez den narozeni?
--c-1)[<]uzivatelovi je porod jenom 10 let
--c-2)[>]uzivatel uz tenhle mesic narozeniny mel a proto uz mu je 11 let
--c-3)[=]muzes poblahoprat uzivatelovi, protoze prave dnes mu je jiz 11 let;-)
no ja na tom nevidim zadnej problem. je to celkem jednoducha sekvence podminek. jen doufam, ze jsem nezameninil zadnou podminku, ale princip zustava stejnej(mozna to ale bude mit jeste jednodussi reseni, na vymejsleni programku totiz nejsem moc dobrej)
...a hlavně se říká "problém s datem", ne "datumem" !
Na php.net jsem nasel tuto funkci:
<?php
function CalcAge($date_of_birth) { // YYYY-MM-DD
$cur_year=date("Y");
$cur_month=date("m");
$cur_day=date("d");
$dob_year=substr($date_of_birth, 0, 4);
$dob_month=substr($date_of_birth, 5, 2);
$dob_day=substr($date_of_birth, 8, 2);
if($cur_month>$dob_month || ($dob_month==$cur_month && $cur_day>=$dob_day) )
return $cur_year-$dob_year;
else
return $cur_year-$dob_year-1;
}
?>
Jedina pripominka: vek se musi zadavat ve formatu RRRR-MM-DD, tedy napr.
pro 16. ledna 1990 je to 1990-01-16
pro 1. unora 1983 je to 1983-02-01
pro 20. prosince 1997 je to 1997-12-20
tj. den i mesic, pokud jsou jednomistne, musi mit na zacatku nulu. Pouziva to totiz substr(), ale nebyl by problem udelat to treba pomoci explode()...