Életkor kalkulátor — Pontos életkor évben, hónapban és napban
Ingyenes életkor kalkulátor: adja meg születési dátumát, hogy megtudja pontos életkorát évben, hónapban és napban, valamint a hetek, napok, órák teljes számát és következő születésnapját.
Életkor kalkulátor
Egy {{dayOfWeek}}-én születtél meg Monday
Következő születésnap: 127 nap múlva (betöltöd az 37-et)
Az életed más egységekben
Életpályám
Az életed egy szemléltető 80 éves időszakhoz képest.
Dokumentáció
Mi az életkor-kalkulátor?
Az életkor-kalkulátor megkeresi két dátum – a születési dátum és egy cél-dátum, általában a mai nap – közötti pontos időt. Az eredményt években, hónapokban és napokban, valamint hónapok, hetek, napok, órák, percek és másodpercek folyamatos összegében adja meg. Az életkor egy múltbeli vagy jövőbeli dátumra is kiszámítható; ez megmutatja, hogy az adott napon hány éves volt vagy lesz valaki.
Az életkor kiszámítása
Az életkor két naptári dátum közötti különbség. Ezt a különbséget két helyes módon lehet leírni, és mindkettő más-más célra hasznos.
Naptári életkor (évek, hónapok, napok)
Ez az életkor megadásának mindennapi módja, például: „33 éves, 4 hónapos és 5 napos.” Meghatározása három lépésből áll:
- Meg kell számolni a születési dátum óta eltelt teljes éveket.
- A legutóbbi születésnaptól meg kell számolni az eltelt teljes hónapokat.
- Ezután meg kell számolni a fennmaradó napokat.
A 3. lépés a hónap vége felé nehézzé válik, mivel a hónapok nem azonos számú napból állnak. Aki január 31-én született, és életkorát március 1-jén mérik, 1 hónapos és 1 napos. Január 31. után egy hónappal február 28. következik (szökőévben február 29.), mivel nincs február 31. Március 1. egy nappal később van. Ez a módszer, amelyet a népszerűvé tevő Python-könyvtár után néha relativedelta-szabálynak neveznek, a rövidebb hónap utolsó napjára igazítja az évforduló dátumát, így a napok száma soha nem lesz negatív.
Teljes eltelt idő (nap, óra, másodperc)
Az eltelt idő pontos meghatározásához mindkét dátumot egyetlen időpontra kell átszámítani, majd a különbséget teljes napokban kell megadni:
ahol d az egész napok száma, t a céldátum, b pedig a születési dátum, mindegyik ezredmásodpercek számaként megadva, az osztó pedig egy nap ezredmásodperceinek száma.
A kivonás előtt mindkét dátumot UTC szerinti éjfélre (koordinált világidőre) állítják. Ez megakadályozza, hogy a nyári időszámítás változásai egy órát hozzáadjanak vagy elvegyenek, és ezáltal torzítsák a napok számát. A napok teljes számából a hetek számát a napok 7-tel való osztásával, lefelé kerekítve kapjuk meg. Az órák, percek és másodpercek a napok számának 24, 1 440, illetve 86 400-dal való szorzásából adódnak.
A teljes napok számának 365-tel vagy 365,25-tel való elosztása hozzávetőleges életkort ad években, de nem veszi figyelembe, hogy az adott időszakban mely évek voltak szökőévek. A fent leírt naptári számítás pontos. A „hány éves vagyok?” kérdés megválaszolásához a naptári életkort kell használni. A teljes napok vagy hetek számát olyan feladatokhoz érdemes használni, amelyek pontosan eltelt időt igényelnek, például gyógyszeradagok időzítéséhez vagy egy mérföldkőig hátralévő idő visszaszámlálásához.
Megoldott példa
Egy 2000. január 1.-jén született személy életkora 2020. január 1.-jén:
| Mérték | Érték |
|---|---|
| Naptári életkor | 20 év, 0 hónap, 0 nap |
| Teljes hónapok száma | 240 |
| Teljes hetek száma | 1 043 |
| Teljes napok száma | 7 305 |
| Teljes órák száma | 175 320 |
| Teljes percek száma | 10 519 200 |
| Teljes másodpercek száma | 631 152 000 |
| A születés napja | Szombat |
A 7 305 nap teljes összege egyenlő 20 × 365 nappal, valamint 5 szökőnappal, amelyek a következő szökőévekre esnek: 2000, 2004, 2008, 2012 és 2016. Ezen évek mindegyike egy 29 napos februárral növelte a napok számát, amely az 20 éves időszakba esik. Ezért nagyobb a napok száma, mint az egyszerű 20 × 365 szorzat, és ezért könnyű kézi számításkor néhány nappal tévedni.
Életkor-képlet kódban
A fent ismertetett, naptári életkoron alapuló módszer a legtöbb programozási nyelven megvalósítható. A beépített dátumkezelő könyvtár használata biztonságosabb, mint a szökőévekre és a hónapok hosszára vonatkozó szabályok kézi megírása.
1from dateutil.relativedelta import relativedelta
2from datetime import date
3
4birth, target = date(2000, 1, 1), date(2020, 1, 1)
5
6age = relativedelta(target, birth) # calendar age
7print(f"{age.years}y {age.months}m {age.days}d")
8
9total_days = (target - birth).days # total elapsed days
10print(total_days) # 7305
111const MS_PER_DAY = 86400000;
2
3// Add n months, clamping the day to the target month's last day
4// (31 January + 1 month = 28 February). Date.UTC on its own does not
5// clamp: it would roll that date forward into March.
6function addMonthsUTC(base, n) {
7 const total = base.getUTCMonth() + n;
8 const y = base.getUTCFullYear() + Math.floor(total / 12);
9 const m = ((total % 12) + 12) % 12;
10 const lastDay = new Date(Date.UTC(y, m + 1, 0)).getUTCDate();
11 return Date.UTC(y, m, Math.min(base.getUTCDate(), lastDay));
12}
13
14function calendarAge(birth, target) {
15 let months = (target.getUTCFullYear() - birth.getUTCFullYear()) * 12
16 + (target.getUTCMonth() - birth.getUTCMonth());
17 if (addMonthsUTC(birth, months) > target.getTime()) months -= 1;
18 const anchor = addMonthsUTC(birth, months);
19 return {
20 years: Math.floor(months / 12),
21 months: months % 12,
22 days: Math.floor((target.getTime() - anchor) / MS_PER_DAY),
23 };
24}
25
26const birth = new Date(Date.UTC(2000, 0, 1));
27const target = new Date(Date.UTC(2020, 0, 1));
28
29calendarAge(birth, target); // { years: 20, months: 0, days: 0 }
30Math.floor((target - birth) / MS_PER_DAY); // 7305
311' Whole days between two dates (A1 = birth, B1 = target):
2=B1-A1
3
4' Calendar age in complete years / months / leftover days:
5=DATEDIF(A1, B1, "y") & " years, " & DATEDIF(A1, B1, "ym") & " months, " & DATEDIF(A1, B1, "md") & " days"
6A Microsoft figyelmeztetése szerint az "md" argumentum negatív számot vagy hibás
napértéket adhat a hónapok határánál, ezért a képlet fennmaradó napokra vonatkozó része nem
mindig egyezik a fent leírt igazítási szabállyal.
Gyakran ismételt kérdések
Hogyan tudom meg a pontos életkoromat? Adja meg a születési dátumot, a cél dátumát pedig hagyja a mai napra állítva. Az eredmény megadja az életkort években, hónapokban és napokban, valamint ugyanezt az életkort teljes napokban, hetekben, órákban és másodpercekben.
Miért ad két életkor-kalkulátor eltérő eredményt? A különbség általában abból adódik, hogy miként számítják a hónap határánál fennmaradó napokat. Az a kalkulátor, amely a hónap végén a rövidebb hónaphoz igazít, a fent leírtak szerint, egy-két nappal eltérhet attól, amely egyszerűen 30-cal osztja el az eltelt időt.
Figyelembe veszi a számítás a szökőéveket? Igen. A napok teljes száma minden, a két dátum közé eső február 29-ét tartalmazza. Olyan évben, amelyben nincs február 29, a szökőnapon született személy születésnapját február 28-ának, az adott hónap utolsó napjának számítják. Az 1996. február 29.-án született személy 26 éves, 11 hónapos és 22 napos 2023. február 20. napján, a következő születésnapja pedig 8 nappal később, 2023. február 28. napján következik be.
Kiszámítható az életkor egy múltbeli vagy jövőbeli dátumra? Igen. Ha a cél-dátumot jövőbeli dátumra állítják, megmutatja, hány éves lesz valaki azon a napon. Ha múltbeli dátumra állítják, megmutatja, hány éves volt. A születési dátum maga nem lehet jövőbeli, és a cél-dátum nem eshet a születési dátum elé.
Befolyásolják az időzónák az eredményt? Nem. Mindkét dátumot UTC szerinti éjfélre alakítják át a napok számának meghatározása előtt, ezért az összeg a felhasználó tartózkodási helyétől és a nyári időszámítás változásaitól függetlenül ugyanaz marad.
Miért tér el a napok száma a napok 365,25-tel való osztásából kapott értéktől? A 365,25 csupán egy év átlagos hossza; nem követi nyomon, hogy az adott időszakban pontosan mely évek 366 napos szökőévek. Két valódi naptári dátum közötti teljes napok számának meghatározása pontos.
Források
- Python
dateutil—relativedelta, a fent leírt, naptári életkor kiszámítására vonatkozó hónap- és napszabály. - Java Platform —
Period.betweenésChronoUnit.DAYS. - Microsoft Excel —
DATEDIFfüggvény. - MDN Web Docs —
Date. - Dershowitz, N. és Reingold, E. M. Calendrical Calculations: The Ultimate Edition. Cambridge University Press, 2018.