Hur man beräknar ålder i JavaScript (DOB till år, månader, dagar)
Lär dig praktiska sätt att beräkna ålder från ett födelsedatum i JavaScript. Inkluderar exakta år, månader, dagar, ett alternativ från datum och vanliga fallgropar som tidszoner och skottår.
Om du behöver beräkna en persons ålder från ett födelsedatum (DOB) i JavaScript kan du göra det på några olika sätt. Nyckeln är att bestämma vad du menar med ålder:
- Ålder i fullbordade år (vanligast)
- Exakt ålder (år, månader, dagar)
- Ålder från ett visst datum (inte alltid idag)
1) Beräkna ålder i fullbordade år (enkelt och korrekt)
Det här är standardmetoden: subtrahera år och justera om födelsedagen inte har inträffat ännu i år.
funktion ageInYears(dob, asOf = new Date()) {
const birth = new Date(dob);
const ref = new Date(asOf);
låt år = ref.getFullYear() - birth.getFullYear();
const m = ref.getMonth() - birth.getMonth();
if (m < 0 || (m === 0 && ref.getDate() < birth.getDate())) {
år--;
}
återvändande år;
}
Exempel: DOB 2000-02-10 och från och med 2026-02-09 ger 25 (födelsedag imorgon).
2) Beräkna exakt ålder (år, månader, dagar)
Om du vill ha en exakt uppdelning kan du först beräkna år, sedan månader och sedan dagar genom att "låna" från föregående månad när det behövs.
function exactAge(dob, asOf = new Date()) {
const birth = new Date(dob);
const ref = new Date(asOf);
låt år = ref.getFullYear() - birth.getFullYear();
let months = ref.getMonth() - birth.getMonth();
let days = ref.getDate() - birth.getDate();
// Justera dagar genom att låna från föregående månad
if (dagar < 0) {
const prevMonth = new Date(ref.getFullYear(), ref.getMonth(), 0); // dag 0 = sista dagen i föregående månad
dagar += prevMonth.getDate();
månader--;
}
// Justera månader genom att låna från föregående år
if (månader < 0) {
månader += 12;
år--;
}
returnera { år, månader, dagar };
}
Obs! Månadens kantfall (som en DOB den 31:a) kräver noggrann testning. Om du behöver något robust över alla lokaler och kantfall, överväg att använda ett vältestat datumbibliotek.
3) Använd ett "från och med"-datum för ålder vid ett tidigare eller framtida datum
Många appar behöver ålder vid ett specifikt referensdatum (försäkring, behörighetsregler, gränser för läsår). Båda funktionerna ovan accepterar en av-parameter, så du kan göra:
ageInYears('1995-06-20', '2030-01-01');
exactAge('1995-06-20', '2030-01-01');
Vanliga fallgropar (och hur man undviker dem)
- Tidszoner: att analysera
ÅÅÅÅ-MM-DDkan bete sig olika i olika miljöer. Om du bara bryr dig om datumet, bygg datumet i lokal tid:nytt datum(år, månadsindex, dag). - skottdagars födelsedagar: bestäm din regel för 29 februari för icke-skottår (28 februari eller 1 mars). Var konsekvent.
- Ogiltiga indata: bekräftar att DOB är ett riktigt datum och inte i framtiden.
Snabbalternativ: använd ålderskalkylatorn online
Om dubehöver bara svaret (eller så vill du validera din implementering), använd vår kostnadsfria kalkylator: Beräkna ålder online.
Relaterade guider
- Hur man beräknar ålder i Excel
- Hur man beräknar ålder i Google Sheets
- Bläddra bland alla guider för åldersberäkning
Vanliga frågor
Vilket är det mest exakta sättet att beräkna ålder?
I de flesta fall är "avslutade år" (ålder i hela år) standarden. Om du behöver en fullständig uppdelning, beräkna år först, sedan månader, sedan dagar, och testa kantfall som månadslängd och skottår.
Varför ger JavaScript ibland fel dag för en datumsträng?
Eftersom nytt datum('ÅÅÅÅ-MM-DD') kan tolkas som UTC i vissa miljöer. Om du bryr dig om det lokala kalenderdatumet, analysera delarna och använd new Date(y, m, d).