JavaScript'te Yaş Nasıl Hesaplanır (DOB'dan Yıllara, Aylara, Günlere)
JavaScript'te doğum tarihinden itibaren yaşı hesaplamanın pratik yollarını öğrenin. Kesin yılları, ayları, günleri, güncel tarih seçeneğini ve saat dilimleri ve artık yıllar gibi yaygın tuzakları içerir.
JavaScript'te bir kişinin yaşını doğum tarihine (DOB) göre hesaplamanız gerekiyorsa bunu birkaç farklı yolla yapabilirsiniz. Önemli olan yaş ile ne kastettiğinize karar vermektir:
- Tamamlanan yıllardaki yaş (en yaygın)
- Tam yaş (yıl, ay, gün)
- Belirli bir tarih itibarıyla yaş (her zaman bugün değil)
1) Tamamlanan yıllarda yaşı hesaplayın (basit ve doğru)
Bu standart yaklaşımdır: yılları çıkarın ve doğum günü bu yıl henüz gerçekleşmemişse ayarlayın.
işlev ageInYears(dob, asOf = new Date()) {
const doğum = yeni Tarih(dob);
const ref = new Date(asOf);
let yıllar = ref.getFullYear() - doğum.getFullYear();
const m = ref.getMonth() - doğum.getMonth();
if (m < 0 || (m === 0 && ref.getDate()
Örnek: DOB 2000-02-10 ve 2026-02-09 itibarıyla 25 verir (yarın doğum günü).
2) Tam yaşı hesapla (yıl, ay, gün)
Tam bir döküm istiyorsanız, gerektiğinde önceki aydan "ödünç alarak" önce yılları, sonra ayları, sonra da günleri hesaplayabilirsiniz.
işlev kesinAge(dob, asOf = new Date()) {
const doğum = yeni Tarih(dob);
const ref = new Date(asOf);
let yıllar = ref.getFullYear() - doğum.getFullYear();
let aylar = ref.getMonth() - doğum.getMonth();
let gün = ref.getDate() - doğum.getDate();
// Bir önceki aydan ödünç alarak günleri ayarlayın
if (gün < 0) {
const prevMonth = new Date(ref.getFullYear(), ref.getMonth(), 0); // gün 0 = önceki ayın son günü
gün += prevMonth.getDate();
aylar--;
}
// Bir önceki yıldan ödünç alarak ayları ayarlayın
if (ay < 0) {
ay += 12;
yıllar--;
}
return { yıl, ay, gün };
}
Not: Ayın tarihi uç durumları (31'indeki DOB gibi) dikkatli testler gerektirir. Tüm yerel ayarlarda ve uç durumlarda sağlam bir şeye ihtiyacınız varsa iyi test edilmiş bir tarih kitaplığı kullanmayı düşünün.
3) Geçmiş veya gelecek bir tarihteki yaş için "şu an itibariyle" tarihini kullanın
Birçok uygulamanın belirli bir referans tarihinde (sigorta, uygunluk kuralları, okul yılı kesintileri) yaşlandırılması gerekir. Yukarıdaki her iki işlev de bir asOf parametresini kabul eder, böylece şunları yapabilirsiniz:
ageInYears('1995-06-20', '2030-01-01');
kesinAge('1995-06-20', '2030-01-01');
Yaygın tuzaklar (ve bunlardan nasıl kaçınılacağı)
- Saat dilimleri:
YYYY-AA-GGayrıştırma, ortamlarda farklı davranabilir. Yalnızca tarihi önemsiyorsanız Tarihi yerel saate göre oluşturun:new Date(year,monthIndex, day). - Artık gün doğum günleri: artık olmayan yıllarda (28 Şubat veya 1 Mart) 29 Şubat için kuralınıza karar verin. Tutarlı olun.
- Geçersiz girişler: DOB'un gerçek bir tarih olduğunu ve gelecekte olmadığını doğrular.
Hızlı seçenek: çevrimiçi yaş hesaplayıcıyı kullanın
Eğersadece cevaba ihtiyacınız varsa (veya uygulamanızı doğrulamak istiyorsanız), ücretsiz hesap makinemizi kullanın: Çevrimiçi Yaşı Hesaplayın.
İlgili kılavuzlar
- Excel'de yaş nasıl hesaplanır
- Google E-Tablolar'da yaş nasıl hesaplanır
- Tüm yaş hesaplama kılavuzlarına göz atın
SSS
Yaşı hesaplamanın en doğru yolu nedir?
Çoğu durumda "tamamlanmış yıllar" (tam yıl cinsinden yaş) standarttır. Tam bir döküme ihtiyacınız varsa önce yılları, sonra ayları, ardından günleri hesaplayın ve ay uzunluğu ve artık yıllar gibi uç durumları test edin.
JavaScript neden bazen tarih dizesi için yanlış günü veriyor?
Çünkü yeni Tarih('YYYY-AA-GG') bazı ortamlarda UTC olarak yorumlanabilir. Yerel takvim tarihini önemsiyorsanız parçaları ayrıştırın ve yeni Tarih(y, m, d) kullanın.