Kalkulator Umur — Umur Tepat dalam Tahun, Bulan & Hari
Kalkulator umur percuma: masukkan tarikh lahir anda untuk mendapatkan umur tepat anda dalam tahun, bulan dan hari, serta jumlah minggu, hari, jam dan hari jadi seterusnya.
Kalkulator Umur
Anda dilahirkan pada hari Monday
Hari jadi seterusnya: 144 hari lagi (mencapai umur 37)
Umur anda dalam unit lain
Kemajuan hidup
Umur anda berbanding dengan tempoh rujukan 80 tahun yang ilustratif.
Dokumentasi
Apa yang dilakukan oleh kalkulator ini
Taipkan tarikh lahir anda dan ia akan memberitahu anda dengan tepat berapa umur anda — dalam tahun, bulan dan hari — seperti cara anda menyatakannya ("Saya berumur 33 tahun, 4 bulan dan 5 hari"). Ia juga menunjukkan umur yang sama dikira semata-mata dalam bulan, minggu, hari, jam, minit dan saat, hari dalam minggu anda dilahirkan, dan berapa lama hingga hari jadi anda yang seterusnya.
Tinggalkan medan kedua pada hari ini untuk umur semasa anda, atau tukarkannya ke tarikh lepas atau masa depan mana-mana untuk mencari umur anda pada tarikh tersebut.
Satu peraturan yang menjadikan umur rumit: bulan dan tahun bukan bilangan hari yang tetap. Februari mempunyai 28 atau 29; bulan lain mempunyai 30 atau 31. Jadi "1 bulan" bermaksud "nombor hari yang sama, satu bulan kemudian" — bukan "30 hari." Kalkulator ini mengikuti peraturan kalendar, itulah sebabnya ia boleh berbeza satu atau dua hari daripada alat yang hanya membahagi dengan 30 atau 365.
Bagaimana umur anda dikira
Umur adalah jurang antara dua tarikh. Terdapat dua cara jujur untuk mengukur jurang itu, dan alat ini menunjukkan kedua-duanya.
1. Umur kalendar (tahun, bulan, hari). Kira tahun penuh daripada hari jadi anda, kemudian bulan penuh, kemudian hari sisa:
- Kira tahun penuh sejak lahir.
- Daripada hari jadi terakhir, kira bulan penuh.
- Dari sana, kira hari sisa.
Bahagian yang halus ialah langkah 3 berhampiran sempadan bulan. Seseorang yang dilahirkan pada 31 Januari, diukur pada 1 Mac, berumur 1 bulan dan 1 hari — kerana "satu bulan selepas Jan 31" mendarat pada Feb 28/29 (tidak ada Feb 31), dan Mac 1 ialah satu hari melepasi itu. Kalkulator ini menjepit ke akhir bulan yang lebih pendek, memadankan peraturan dateutil.relativedelta yang digunakan secara meluas supaya hari jadi akhir bulan tidak pernah menghasilkan kiraan hari negatif.
2. Jumlah masa berlalu (hari, jam, saat). Untuk angka "umur anda dalam unit lain", dua tarikh ditukar kepada kiraan hari penuh dan didarabkan:
Kedua-dua tarikh dipin ke tengah malam UTC terlebih dahulu, jadi perubahan penjimatan siang tidak boleh menambah atau mengurangkan sejam dan membuang kiraan hari. Minggu adalah hari ÷ 7 (dibundarkan ke bawah); jam, minit dan saat adalah kiraan hari yang diskalakan.
Mengapa tidak hanya membahagi hari dengan 365? Kerana anda akan hanyut. Membahagi 7,305 hari dengan 365 memberikan 20.01 tahun; membahagi dengan 365.25 memberikan 20.00 — tetapi tidak satupun mengetahui tahun mana yang merupakan tahun lompat atau bulan mana yang sebenarnya anda lalui. Pengiraan kalendar adalah tepat; pembahagian hari adalah anggaran. Gunakan umur kalendar untuk "berapa umur saya," dan jumlah hari/minggu untuk kerja waktu berlalu yang tepat (masa ubat, tempoh projek, pengiraan pencapaian).
Contoh kerja
Dilahirkan 1 Januari 2000, diukur 1 Januari 2020:
| Ukuran | Nilai |
|---|---|
| Umur kalendar | 20 tahun, 0 bulan, 0 hari |
| Jumlah hari | 7,305 |
| Jumlah minggu | 1,043 |
| Hari dilahirkan | Sabtu |
Hari 7,305 = 20 × 365 + 5 hari lompat (2000, 2004, 2008, 2012, 2016). Detail tunggal itu — lima hari tambahan yang kebanyakan orang lupa — adalah sebab mengapa kalkulator mengalahkan aritmetik mental.
Umur dalam kod
Pengiraan yang sama dalam setiap bahasa. Untuk umur kalendar, pilih perpustakaan tarikh terbina daripada aritmetik buatan tangan — ia sudah mengetahui tahun lompat dan panjang bulan.
1' 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"
61from 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
111function calendarAge(birth, target) {
2 let months = (target.getUTCFullYear() - birth.getUTCFullYear()) * 12
3 + (target.getUTCMonth() - birth.getUTCMonth());
4 const anchor = new Date(Date.UTC(birth.getUTCFullYear(), birth.getUTCMonth() + months, birth.getUTCDate()));
5 if (anchor > target) months--;
6 return { years: Math.floor(months / 12), months: months % 12 };
7}
8
9const birth = new Date(Date.UTC(2000, 0, 1));
10const target = new Date(Date.UTC(2020, 0, 1));
11const totalDays = Math.floor((target - birth) / 86400000); // 7305
121import java.time.LocalDate;
2import java.time.Period;
3import java.time.temporal.ChronoUnit;
4
5LocalDate birth = LocalDate.of(2000, 1, 1);
6LocalDate target = LocalDate.of(2020, 1, 1);
7
8Period age = Period.between(birth, target); // 20y 0m 0d
9long totalDays = ChronoUnit.DAYS.between(birth, target); // 7305
101using System;
2
3var birth = new DateTime(2000, 1, 1);
4var target = new DateTime(2020, 1, 1);
5
6int years = target.Year - birth.Year;
7if (birth.AddYears(years) > target) years--; // not birthday yet
8long totalDays = (target - birth).Days; // 7305
91#include <chrono>
2using namespace std::chrono;
3
4// C++20 calendar types
5sys_days birth = year{2000}/1/1;
6sys_days target = year{2020}/1/1;
7
8auto total_days = (target - birth).count(); // 7305
9years_months_days ymd_diff{birth, target}; // year_month_day arithmetic
101package main
2
3import "time"
4
5func main() {
6 birth := time.Date(2000, 1, 1, 0, 0, 0, 0, time.UTC)
7 target := time.Date(2020, 1, 1, 0, 0, 0, 0, time.UTC)
8 totalDays := int(target.Sub(birth).Hours() / 24) // 7305
9 _ = totalDays
10}
111use chrono::{NaiveDate, Datelike};
2
3let birth = NaiveDate::from_ymd_opt(2000, 1, 1).unwrap();
4let target = NaiveDate::from_ymd_opt(2020, 1, 1).unwrap();
5
6let total_days = (target - birth).num_days(); // 7305
7let years = target.year() - birth.year(); // adjust if birthday not reached
81<?php
2$birth = new DateTime('2000-01-01');
3$target = new DateTime('2020-01-01');
4$diff = $birth->diff($target);
5
6echo "{$diff->y}y {$diff->m}m {$diff->d}d\n"; // 20y 0m 0d
7echo $diff->days; // 7305
81require 'date'
2
3birth = Date.new(2000, 1, 1)
4target = Date.new(2020, 1, 1)
5
6total_days = (target - birth).to_i # 7305
7years = target.year - birth.year
8years -= 1 if birth.next_year(years) > target
91birth <- as.Date("2000-01-01")
2target <- as.Date("2020-01-01")
3
4total_days <- as.integer(target - birth) # 7305
5Soalan biasa
Berapa umur saya dengan tepat? Masukkan tarikh lahir anda dan tinggalkan sasaran pada hari ini. Kalkulator menunjukkan umur anda dalam tahun, bulan dan hari, dan mengulanginya dalam jumlah hari, minggu, jam dan saat.
Mengapa umur saya berbeza daripada kalkulator lain? Hampir selalu lebihan bulan/hari. Alat tidak bersetuju tentang cara mengira hari selepas bulan penuh terakhir di sempadan bulan. Ini menjepit ke bulan yang lebih pendek (konvensyen relativedelta); alat yang membahagi dengan 30 akan berbeza satu atau dua hari.
Adakah ia mengendalikan tahun lompat dan hari jadi 29 Februari? Ya. Kiraan hari merangkumi setiap hari lompat dalam julat, dan hari jadi 29 Februari diukur terhadap 28 Feb / 1 Mac dalam tahun bukan lompat tanpa limpahan.
Bolehkah saya mengira umur pada tarikh lepas atau masa depan? Ya — tetapkan medan "Umur pada tarikh" ke tarikh mana-mana. Tarikh masa depan memberitahu anda berapa umur anda pada masa itu; tarikh lepas, berapa umur anda.
Bagaimana dengan zon waktu? Tarikh dinormalkan ke UTC sebelum dikira, jadi jumlah hari penuh stabil tanpa mengira di mana anda berada atau sama ada penjimatan siang berubah.
Sumber
- Python
dateutil—relativedelta(peraturan bulan/hari umur kalendar yang diikuti alat ini). - Platform Java —
Period.betweendanChronoUnit.DAYS. - Microsoft Excel —
DATEDIFfunction. - MDN Web Docs —
Date. - Dershowitz, N., & Reingold, E. M. Calendrical Calculations: The Ultimate Edition. Cambridge University Press, 2018.