Kalkulator Wieku — Dokładny Wiek w Latach, Miesiącach i Dniach
Darmowy kalkulator wieku: wpisz swoją datę urodzenia, aby poznać dokładny wiek w latach, miesiącach i dniach, a także całkowitą liczbę tygodni, dni, godzin i datę następnych urodzin.
Kalkulator Wieku
Urodziłeś się w Monday
Następne urodziny: 127 dni stąd (obchodzisz 37 lat)
Twój wiek w innych jednostkach
Postęp życiowy
Twój wiek w stosunku do ilustracyjnego okresu 80 lat.
Dokumentacja
Czym jest kalkulator wieku?
Kalkulator wieku wyznacza dokładny czas między dwiema datami: datą urodzenia a datą docelową, zwykle bieżącym dniem. Wynik podaje w latach, miesiącach i dniach, a także jako łączną liczbę miesięcy, tygodni, dni, godzin, minut i sekund. Wiek można również obliczyć dla daty z przeszłości lub przyszłości, aby sprawdzić, ile dana osoba miała lub będzie miała lat tego dnia.
Jak obliczać wiek
Wiek to różnica między dwiema datami kalendarzowymi. Istnieją dwa poprawne sposoby opisywania tej różnicy, a każdy z nich jest przydatny w innych celach.
Wiek kalendarzowy (lata, miesiące, dni)
Jest to codzienny sposób podawania wieku, na przykład „33 lata, 4 miesiące i 5 dni”. Oblicza się go w trzech krokach:
- Policz pełne lata, które upłynęły od daty urodzenia.
- Od ostatnich urodzin policz pełne miesiące, które upłynęły.
- Następnie policz pozostałe dni.
Krok 3 staje się kłopotliwy pod koniec miesiąca, ponieważ miesiące nie mają takiej samej liczby dni. Osoba urodzona 31 stycznia, której wiek jest obliczany 1 marca, ma 1 miesiąc i 1 dzień. Miesiąc po 31 stycznia przypada 28 lutego (lub 29 lutego w roku przestępnym), ponieważ nie ma 31 lutego. 1 marca przypada dzień później. Ta metoda, nazywana czasem regułą relativedelta od nazwy biblioteki języka Python, która ją spopularyzowała, ustawia datę rocznicy na ostatni dzień krótszego miesiąca, dzięki czemu liczba dni nigdy nie jest ujemna.
Łączny czas, który upłynął (dni, godziny, sekundy)
Aby precyzyjnie obliczyć przeżyty czas, obie daty przekształca się w jeden punkt na osi czasu, a następnie oblicza różnicę w pełnych dniach:
gdzie d oznacza liczbę pełnych dni, t datę docelową, a b datę urodzenia, przy czym każdą z tych wartości wyraża się jako liczbę milisekund, a dzielnik oznacza liczbę milisekund w jednej dobie.
Przed odjęciem obie daty ustawia się na północ czasu UTC (uniwersalnego czasu koordynowanego). Zapobiega to temu, by zmiany czasu letniego dodawały lub odejmowały godzinę i zniekształcały liczbę dni. Na podstawie łącznej liczby dni liczbę tygodni oblicza się jako dni podzielone przez 7 i zaokrąglone w dół. Liczby godzin, minut i sekund otrzymuje się, mnożąc liczbę dni odpowiednio przez 24, 1 440 i 86 400.
Podzielenie łącznej liczby dni przez 365 lub 365,25 daje przybliżony wiek w latach, ale nie uwzględnia tego, które lata w tym okresie były przestępne. Liczenie kalendarzowe, opisane powyżej, jest dokładne. Wiek kalendarzowy służy do odpowiedzi na pytanie „ile mam lat”. Łączną liczbę dni lub tygodni stosuje się w zadaniach wymagających precyzyjnego czasu, takich jak ustalanie odstępów między dawkami leków lub odliczanie do ważnego wydarzenia.
Przykład obliczeniowy
Osoba urodzona 1 stycznia 2000, której wiek jest obliczany 1 stycznia 2020:
| Miara | Wartość |
|---|---|
| Wiek kalendarzowy | 20 lat, 0 miesięcy, 0 dni |
| Łączna liczba miesięcy | 240 |
| Łączna liczba tygodni | 1 043 |
| Łączna liczba dni | 7 305 |
| Łączna liczba godzin | 175 320 |
| Łączna liczba minut | 10 519 200 |
| Łączna liczba sekund | 631 152 000 |
| Dzień tygodnia urodzenia | Sobota |
Łączna liczba 7 305 dni równa się 20 × 365 plus 5 dni przestępne przypadające w latach przestępnych 2000, 2004, 2008, 2012 i 2016. Każdy z tych lat dodał 29 lutego, który przypada w okresie 20 lat. Dlatego liczba dni jest większa niż proste 20 × 365, a ręczne obliczenie łatwo pomylić o kilka dni.
Wzór obliczania wieku w kodzie
Opisaną wyżej metodę obliczania wieku kalendarzowego można zaimplementować w większości języków programowania. Korzystanie z wbudowanej biblioteki dat jest bezpieczniejsze niż ręczne zapisywanie reguł dotyczących lat przestępnych i długości miesięcy.
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"
6Firma Microsoft ostrzega, że argument "md" może zwracać liczbę ujemną lub nieprawidłową
liczbę dni w pobliżu granic miesięcy, dlatego część tego wzoru dotycząca
pozostałych dni nie zawsze jest zgodna z opisaną wyżej regułą przypisywania do ostatniego dnia miesiąca.
Często zadawane pytania
Jak obliczyć dokładny wiek? Wprowadź datę urodzenia i pozostaw datę docelową ustawioną na dziś. Wynik podaje wiek w latach, miesiącach i dniach, a także ten sam wiek jako łączną liczbę dni, tygodni, godzin i sekund.
Dlaczego dwa kalkulatory wieku podają różne wyniki? Różnica zwykle wynika ze sposobu liczenia pozostałych dni w pobliżu granicy miesiąca. Kalkulator, który pod koniec miesiąca przypisuje datę do krótszego miesiąca, jak opisano powyżej, może różnić się o dzień lub dwa od kalkulatora, który po prostu dzieli czas, jaki upłynął, przez 30.
Czy obliczenia uwzględniają lata przestępne? Tak. Łączna liczba dni obejmuje każdy 29 lutego przypadający między obiema datami. W roku bez 29 lutego rocznicę urodzenia przypadającego w dniu przestępnym liczy się jako 28 lutego, czyli ostatni dzień tego miesiąca. Osoba urodzona 29 lutego 1996 ma 26 lat, 11 miesięcy i 22 dni w dniu 20 lutego 2023, a jej następne urodziny przypadają 8 dni później, 28 lutego 2023.
Czy można obliczyć wiek dla daty z przeszłości lub przyszłości? Tak. Ustawienie przyszłej daty docelowej pokazuje, ile dana osoba będzie miała lat tego dnia. Ustawienie daty z przeszłości pokazuje, ile miała wtedy lat. Sama data urodzenia nie może przypadać w przyszłości, a data docelowa nie może być wcześniejsza niż data urodzenia.
Czy strefy czasowe wpływają na wynik? Nie. Przed obliczeniem liczby dni obie daty przekształca się na północ czasu UTC, więc łączny wynik pozostaje taki sam niezależnie od lokalizacji użytkownika i zmian czasu letniego.
Dlaczego liczba dni różni się od wyniku dzielenia dni przez 365,25? 365,25 to tylko średnia długość roku; wartość ta nie uwzględnia tego, które konkretne lata w danym okresie były latami przestępnymi o długości 366 dni. Zliczenie pełnych dni między dwiema rzeczywistymi datami kalendarzowymi jest dokładne.
Źródła
- Python
dateutil—relativedelta, opisana powyżej reguła miesięcy i dni dla wieku kalendarzowego. - Platforma Java —
Period.betweenorazChronoUnit.DAYS. - Microsoft Excel — funkcja
DATEDIF. - Dokumentacja internetowa MDN —
Date. - Dershowitz, N. i Reingold, E. M. Calendrical Calculations: The Ultimate Edition. Cambridge University Press, 2018.