Jak obliczyć wiek w JavaScript (DOB na lata, miesiące, dni)
Poznaj praktyczne sposoby obliczania wieku na podstawie daty urodzenia w JavaScript. Obejmuje dokładne lata, miesiące, dni, opcję stanu na dzień i typowe pułapki, takie jak strefy czasowe i lata przestępne.
Jeśli chcesz obliczyć wiek danej osoby na podstawie daty urodzenia (DOB) w JavaScript, możesz to zrobić na kilka różnych sposobów. Kluczem jest podjęcie decyzji, co masz na myśli mówiąc wiek:
- Wiek w ukończonych latach (najczęściej)
- Dokładny wiek (lata, miesiące, dni)
- Wiek na określoną datę (nie zawsze dzisiaj)
1) Oblicz wiek w ukończonych latach (proste i poprawne)
To standardowe podejście: odejmij lata i dostosuj, jeśli w tym roku urodziny jeszcze się nie odbyły.
funkcja ageInYears(dob, asOf = nowa data()) {
const urodzenie = nowa data (dob);
const ref = nowa data (asOf);
niech lata = ref.getFullYear() - urodzenie.getFullYear();
const m = ref.getMonth() - urodzenie.getMonth();
if (m < 0 || (m === 0 && ref.getDate() < urodzenie.getDate())) {
lata--;
}
zwrócić lata;
}
Przykład: Data urodzenia 2000-02-10 i stan na 2026-02-09 daje 25 (jutro urodziny).
2) Oblicz dokładny wiek (lata, miesiące, dni)
Jeśli chcesz uzyskać dokładny podział, możesz najpierw obliczyć lata, potem miesiące, a potem dni, „pożyczając” z poprzedniego miesiąca, jeśli zajdzie taka potrzeba.
funkcja dokładnyAge(dob, asOf = nowa data()) {
const urodzenie = nowa data (dob);
const ref = nowa data (asOf);
niech lata = ref.getFullYear() - urodzenie.getFullYear();
niech miesiące = ref.getMonth() - urodzenie.getMonth();
niech dni = ref.getDate() - narodziny.getDate();
// Dostosuj dni, zapożyczając dane z poprzedniego miesiąca
jeśli (dni < 0) {
const prevMonth = nowa data(ref.getFullYear(), ref.getMonth(), 0); // dzień 0 = ostatni dzień poprzedniego miesiąca
dni += prevMonth.getDate();
miesiące--;
}
// Dostosuj miesiące, zapożyczając dane z poprzedniego roku
jeśli (miesiące < 0) {
miesiące += 12;
lata--;
}
return {lata, miesiące, dni };
}
Uwaga: Przypadki brzegowe z datą miesiąca (np. data urodzenia 31-go) wymagają dokładnego przetestowania. Jeśli potrzebujesz czegoś niezawodnego we wszystkich lokalizacjach i przypadkach brzegowych, rozważ użycie dobrze przetestowanej biblioteki dat.
3) Użyj daty „na dzień” dla wieku w dacie przeszłej lub przyszłej
Wiele aplikacji wymaga wieku w określonej dacie referencyjnej (ubezpieczenie, zasady kwalifikowalności, koniec roku szkolnego). Obie powyższe funkcje akceptują parametr asOf, więc możesz:
wiek w latach('1995-06-20', '2030-01-01');
dokładny Wiek('1995-06-20', '2030-01-01');
Typowe pułapki (i jak ich unikać)
- Strefy czasowe: analizowanie
RRRR-MM-DDmoże zachowywać się inaczej w różnych środowiskach. Jeśli zależy Ci tylko na dacie, zbuduj Datę w czasie lokalnym:new Date(rok, miesiącIndeks, dzień). - Urodziny w dzień przestępny: wybierz regułę na 29 lutego w latach innych niż przestępne (28 lutego lub 1 marca). Bądź konsekwentny.
- Nieprawidłowe dane wejściowe: sprawdź, czy data daty urodzenia jest rzeczywistą datą, a nie przyszłą.
Szybka opcja: skorzystaj z internetowego kalkulatora wieku
Jeślipotrzebujesz tylko odpowiedzi (lub chcesz zweryfikować swoją implementację), skorzystaj z naszego bezpłatnego kalkulatora: Oblicz wiek online.
Powiązane przewodniki
- Jak obliczyć wiek w Excelu
- Jak obliczyć wiek w Arkuszach Google
- Przejrzyj wszystkie przewodniki dotyczące obliczania wieku
Często zadawane pytania
Jaki jest najdokładniejszy sposób obliczenia wieku?
W większości przypadków standardem są „ukończone lata” (wiek w pełnych latach). Jeśli potrzebujesz pełnego zestawienia, oblicz najpierw lata, potem miesiące, potem dni i przetestuj przypadki brzegowe, takie jak długość miesiąca i lata przestępne.
Dlaczego JavaScript czasami podaje zły dzień w ciągu daty?
Ponieważ nowa data('RRRR-MM-DD') może być interpretowana jako UTC w niektórych środowiskach. Jeśli zależy Ci na dacie z lokalnego kalendarza, przeanalizuj części i użyj nowej daty (y, m, d).