Autor Zpráva
mackopu
Profil
Sháním postup pro výpočet věku na roky, měsíce a dny. Zatím jsem našel jen skript, který vypíše zaokrouhleně roky, nebo počet uplynulých dnů. Určitě by ovšem vypadal líp výstup: "Od vašeho narození uplynulo 30 let, 2 měsíce a 3 dny.". Nevíte o něčem?
Data narození mám uložena v databázi ve formátu rrrr-mm-dd, ale to nebude problém převést.
mila
Profil
Tohle by si měl umět naprogramovat se základní matematikou. Idea by byla asi jako když odečítáš pod sebou - odečtu dny. Pokud dostanu záporné číslo, přičtu počet dní v minulém měsíci a pamatuji si jedničku. Odečtu od sebe měsíce, pokud si pamatuji jedničku tak i tu, pokud dostanu záporné číslo, přičtu dvanáct, a pamatuji si jedničku. Nakonec od sebe odečtu roky, pípadně ještě jedničku, co si pamatuji.

Na stránky to ale nedávej, nikomu to na nic není, jen to otravuje.
mackopu
Profil
To není na stránky pro návštěvníky, ale pro administrátora. A v tomto konkrétním případě se nejedná o výpočet věku, ale o dobu trvání členství registrovaných.
souki
Profil
matematicky by to určitě šlo taky hezky, ale proč tak složitě. Pokud je v databázi tak by to mělo jít jednoduše jako NOW()-datum - jak je to přesně si radši najdi....
Pokud je to jen v php, tak si obě data převed na vteřiny - třeba přes strtotime - odečti a převed zase na dny třeba pomocí date()
Bubák
Profil
souki
To ti bude dávat odlišné výsledky vlivem různé délky měsíců a přestupných let.
koudi
Profil
A co třeba funkce timediff?
mackopu
Profil
TIMEDIFF moje verze MYSQL nepodporuje - to by pak bylo snadné, že.
Mike
Profil
function get_age($birth)
{
$arr = explode ("-", $birth);
$rok = $arr[0];
$mesic = $arr[1];
$den = $arr[2];

$nowdate = date("Ymd");
$birthday = $rok.$mesic.$den;
$age = floor(($nowdate-$birthday)/10000);
return $age;
}

edit: jo je to trochu pozdní ale tak třeba to někomu pomůže btw ted by to mělo fungovat úplně
bukaj
Profil
Mike
nic proti, ale nezdá se ti tvá odpověď trochu pozdní? :)
mackopu
Profil
Pozdě, ale přece :-)
Přikládám řešení, které mi zatím fungovalo bez chyby:
function UrciVek($vstup)

{
list($den,$mesic,$rok)=explode(".",$vstup);
$vek = strVal((Time()-mktime(0,0,0,$mesic,$den,$rok))/31536000);
$vek = Floor($vek);
return $vek;
};

// příklad
$narozen = Date("d.m.Y", strtotime("2000-01-01"));
echo UrciVek($narozen);
Toto téma je uzamčeno. Odpověď nelze zaslat.