Yaş Hesaplayıcısı — Tam Yaş Yıl, Ay ve Gün Cinsinden
Ücretsiz yaş hesaplayıcısı: doğum tarihinizi girin ve tam yaşınızı yıl, ay ve gün cinsinden alın, ayrıca toplam haftalar, günler, saatler ve sonraki doğum gününüzü öğrenin.
Yaş Hesaplayıcısı
Doğduğunuz bir Monday
Sonraki doğum günü: 127 gün uzakta (37 yaşına dönüyor)
Yaşınız diğer birimlerle
Yaşam ilerlemesi
Yaşınız, örneğin 80 yıllık bir yaşam dönemine karşı.
Belgeler
Yaş hesaplayıcı nedir?
Yaş hesaplayıcı, iki tarih arasındaki kesin süreyi bulur: doğum tarihi ve genellikle bugün olan hedef tarih. Sonucu yıl, ay ve gün olarak; ayrıca ay, hafta, gün, saat, dakika ve saniye cinsinden toplam süre olarak verir. Yaş, geçmişteki veya gelecekteki bir tarih için de hesaplanabilir; bu, kişinin o gün kaç yaşında olduğunu veya kaç yaşında olacağını gösterir.
Yaş nasıl hesaplanır?
Yaş, iki takvim tarihi arasındaki farktır. Bu farkı açıklamanın iki doğru yolu vardır ve her ikisi de farklı amaçlar için kullanışlıdır.
Takvim yaşı (yıl, ay, gün)
Bu, insanların yaşlarını günlük hayatta ifade etme biçimidir; örneğin “33 yıl, 4 ay ve 5 günlük.” Üç adımda bulunur:
-
Doğum tarihinden bu yana geçen tam yılları sayın.
-
Son doğum gününden bu yana geçen tam ayları sayın.
-
Ardından kalan günleri sayın.
-
adım, ayın sonlarına doğru zorlaşır; çünkü ayların gün sayıları aynı değildir. Yaşı 1 Mart tarihinde hesaplanan ve 31 Ocak'ta doğan biri 1 aylık ve 1 günlük olur. 31 Ocak'tan bir ay sonrası, 28 Şubat'tır (artık yılda 29 Şubat); çünkü 31 Şubat yoktur. 1 Mart bundan bir gün sonradır. Bazen bu yönteme, onu yaygınlaştıran Python kütüphanesinden sonra
relativedeltakuralı denir; yöntem, gün sayısının negatif olmaması için yıl dönümü tarihini daha kısa ayın son gününe çeker.
Geçen toplam süre (gün, saat, saniye)
Yaşanmış sürenin kesin olarak hesaplanması için her iki tarih de zaman içinde tek bir noktaya dönüştürülür ve fark tam gün cinsinden alınır:
d tam gün sayısı, t hedef tarih ve b doğum tarihi olmak üzere her biri milisaniye cinsinden alınır; bölen ise bir gündeki milisaniye sayısıdır.
Çıkarma işleminden önce her iki tarih de UTC (Eşgüdümlü Evrensel Zaman) gece yarısına ayarlanır. Bu, yaz saati uygulamasındaki değişikliklerin bir saat ekleyerek veya çıkararak gün sayısını saptırmasını önler. Toplam gün sayısından haftalar, gün sayısının 7'ye bölünüp aşağı yuvarlanmasıyla bulunur. Saat, dakika ve saniye ise gün sayısının sırasıyla 24, 1.440 ve 86.400 ile çarpılmasıyla hesaplanır.
Toplam gün sayısının 365 veya 365,25'e bölünmesi, yıl cinsinden yaklaşık bir yaş verir; ancak bu süre içindeki hangi yılların artık yıl olduğunu hesaba katmaz. Yukarıda açıklanan takvim hesabı kesindir. “Kaç yaşındayım?” sorusunu yanıtlamak için takvim yaşını kullanın. İlaç dozlarının zamanlaması veya bir dönüm noktasına geri sayım gibi, geçen sürenin kesin olmasını gerektiren işlemler için toplam gün ya da hafta sayısını kullanın.
Çözümlü örnek
Yaşı 1 Ocak 2020 tarihinde hesaplanan, 1 Ocak 2000 doğumlu bir kişi için:
| Ölçüt | Değer |
|---|---|
| Takvim yaşı | 20 yıl, 0 ay, 0 gün |
| Toplam ay | 240 |
| Toplam hafta | 1.043 |
| Toplam gün | 7.305 |
| Toplam saat | 175.320 |
| Toplam dakika | 10.519.200 |
| Toplam saniye | 631.152.000 |
| Doğum günü | Cumartesi |
7.305 günlük toplam süre, 20 × 365 güne ve 5 artık gününe eşittir; bu artık günleri 2000, 2004, 2008, 2012 ve 2016 yıllarına aittir. Bu yılların her biri, 20 yıllık dönemin içine giren bir 29 Şubat günü eklemiştir. Bu nedenle gün sayısı basitçe 20 × 365 işleminden daha yüksektir; ayrıca elle hesaplandığında birkaç günlük hata yapmak kolaydır.
Kodda yaş hesaplama formülü
Yukarıdaki takvim yaşı yöntemi çoğu programlama dilinde uygulanabilir. Artık yıl ve ay uzunluğu kurallarını elle yazmaktansa yerleşik bir tarih kütüphanesi kullanmak daha güvenlidir.
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"
6Microsoft, "md" bağımsız değişkeninin ay sınırlarına yakın tarihlerde negatif veya yanlış bir
sayı döndürebileceği konusunda uyarır; bu nedenle bu formülün kalan günler bölümü yukarıdaki günleri ayın son gününe çekme kuralıyla her zaman
uyuşmaz.
Sık sorulan sorular
Kesin yaşımı nasıl bulurum? Bir doğum tarihi girin ve hedef tarihi bugün olarak bırakın. Sonuç, yaşı yıl, ay ve gün cinsinden; ayrıca aynı yaşı toplam gün, hafta, saat ve saniye cinsinden verir.
İki yaş hesaplayıcı neden farklı sonuçlar veriyor? Fark genellikle ay sınırına yakın tarihlerde kalan günlerin nasıl sayıldığıyla ilgilidir. Ay sonunda tarihi daha kısa ayın son gününe çeken bir hesaplayıcı, yukarıda açıklandığı gibi, geçen süreyi yalnızca 30'a bölen bir hesaplayıcıdan bir veya iki gün farklı sonuç verebilir.
Hesaplamada artık yıllar dikkate alınıyor mu? Evet. Toplam gün sayısına iki tarih arasına denk gelen her 29 Şubat dahildir. 29 Şubat bulunmayan bir yılda, artık gününde doğan kişinin doğum günü o ayın son günü olan 28 Şubat olarak sayılır. 29 Şubat 1996 tarihinde doğan biri, 20 Şubat 2023 tarihinde 26 yıl, 11 ay ve 22 günlük olur; bir sonraki doğum günü 8 gün sonra, 28 Şubat 2023 tarihinde gerçekleşir.
Yaş geçmişteki veya gelecekteki bir tarih için hesaplanabilir mi? Evet. Hedef tarihi gelecekteki bir tarihe ayarlamak, kişinin o gün kaç yaşında olacağını gösterir. Geçmişteki bir tarihe ayarlamak ise o tarihte kaç yaşında olduğunu gösterir. Doğum tarihi gelecekte olamaz ve hedef tarih doğum tarihinden önce olamaz.
Saat dilimleri sonucu etkiler mi? Hayır. Gün sayısı hesaplanmadan önce her iki tarih de UTC gece yarısına dönüştürülür; bu nedenle toplam, kullanıcının konumundan veya yaz saati uygulamasındaki değişikliklerden bağımsız olarak aynı kalır.
Gün sayısı, günleri 365,25'e bölmekten neden farklıdır? 365,25 yalnızca ortalama yıl uzunluğudur; bu süre içindeki belirli yılların 366 günlük artık yıllar olduğunu göstermez. İki gerçek takvim tarihi arasındaki tam günleri saymak kesindir.
Kaynaklar
- Python
dateutil— Yukarıda açıklanan takvim yaşı ay/gün kuralı:relativedelta. - Java Platformu —
Period.betweenveChronoUnit.DAYS. - Microsoft Excel —
DATEDIFişlevi. - MDN Web Belgeleri —
Date. - Dershowitz, N. ve Reingold, E. M. Calendrical Calculations: The Ultimate Edition. Cambridge University Press, 2018.