Autor Zpráva
M**
Profil *
Jak pomocí PHP vypočítám, kolik mi je let?

Např.:
$narozeni=25.3.1995;
?
?

Určitě se bude potřebovat nějaké datum narození, dnešní datum, a pak to nějak odečíst. Ale jak?

Prosím, poraďte...
Str4wberry
Profil
M**
http://php.vrana.cz/zjisteni-veku-z-data-narozeni.php + funkce strtotime().
niCe
Profil
Zkus tohle http://interval.cz/clanky/php-jak-pracovat-s-datem-a-casem/

Budeš muset zjistit aktuální čas pomocí Time() a pak budeš muset převést datum narození do toho samého formátu (tj. do formátu sekund od r. 1970 - bohužel ale nevim jak)

Pak zjistíš rozdíl v sekundách a jednoducho si to převedeš na roky

$stari = ceil($rozdil / (3600*24*365));

Ale nevím jak zařídit ten první krok - tj převést 25.3.1995 na počet sekund od r. 1970, snad poradí někdo další :)

niCe
Mireczech
Profil
int mktime ( [int $hour [, int $minute [, int $second [, int $month [, int $day [, int $year [, int $is_dst]]]]]]] )

vraci pocet sekund od zacatku epochy
Keilew
Profil
Nezapomeňte na přestupné roky!
nightfish
Profil
Mireczech
co vrátí mktime pro datum narození 1. 4. 1965?
tajny spion
Profil
nightfish
Error?
nightfish
Profil
tajny spion
však si to vyzkoušej :-)
error to není, ale správná hodnota taky ne
DFly
Profil
nightfish error to je, ale jen na Win :-)))
BOHUZEL casova knihovna win neumi pocitat do minusu !!! :-(((
musel jsem hledat jinou cestu kdyz jsem jeden intranet prehazoval na Win stroj
nightfish
Profil
DFly
hmm, tak to že se to chová jinak na Windows a na Linuxu jsem netušil, díky za info (a jak se dívám tak mi to v PHP 5.2.4 už taky funguje

manuálová stránka k tomu říká:
Before PHP 5.1.0, negative timestamps were not supported under any known version of Windows and some other systems as well. Therefore the range of valid years was limited to 1970 through 2038.
V PHP starším než 5.1.0 nebyly záporné timestampy podporovány pod žádnou známou verzí Windows a také některých dalších systémech. Proto byl rozsah platných letopočtů omezen od 1970 do 2038.
niCe
Profil
Netušim, jestli je téma ještě aktuální, ale holt se to musí úplně obejít bez mktime.

Vezmu aktuální čas, převedu ho na DD MM YY

Pro přesnost na roky pak stačí udělat rozdíl mezi aktuálním YY a uvedeným rokem narození. V případě, že ještě nebyly narozeniny (zjistíme tak, že součin data a měsíce narození je menší než součin DD a MM) odečteme 1 rok.

Zkouška:

narození
25. 11. 1986

dnes
29. 10. 2007

První krok: 21 let.
Ale... 25*11 je větší než 29*10, proto odečteme 1 a máme 20.

Nekecam?
Str4wberry
Profil
niCe
Proč jsi raději nepřečteš stránku, kterou jsem odkázal a řešíš tady „nesmrtelnost chrousta“?
tiso
Profil
niCe (zjistíme tak, že součin data a měsíce narození je menší než součin DD a MM)
A na toto si prišiel ako? Schválne aký vek to bude hádzať niekomu kto je narodený 2. 2. v dňoch 31.1 alebo 1.3? Správny?

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0