Vanuskalkulaator — Täpne vanus aastates, kuudes ja päevades
Tasuta vanuskalkulaator: sisestage oma sünniaeg, et saada oma täpne vanus aastates, kuudes ja päevades, pluss kogu nädalate arv, päevade arv, tunnid ja teie järgmine sünnipäev.
Vanuskalkulaator
Te sündisite Monday
Järgmine sünnipäev: 144 päeva pärast (turning 37)
Teie vanus teistes ühikutes
Elu edenemine
Teie vanus illustraatilise 80-aastase viitemahu vastu.
Dokumentatsioon
What this calculator does
Tippige oma sünniaeg ja see ütleb teile täpselt, kui vana te olete — aastates, kuudes ja päevades — samamoodi, nagu teie seda välja ütleksite ("Olen 33 aastat, 4 kuud ja 5 päeva vana"). See näitab ka seda sama vanust, mis on arvestatud puhtalt kuudes, nädalates, päevades, tundides, minutites ja sekundites, nädalapäeva, millal te sündisite, ja kui kaua kuni teie järgmise sünnipäevani.
Jätke teine väli tänasele kuupäevale oma praeguse vanuse jaoks või muutke seda mis tahes möödunud või tulevase kuupäevale, et leida oma vanus sel kuupäeval.
Üks reegel, mis vanuse arvestamise keeruliseks teeb: kuud ja aastad ei ole fikseeritud päevade arv. Veebruaril on 28 või 29; teistel kuudel on 30 või 31. Nii et "1 kuu" tähendab "sama päevanumbrit, üks kuu hiljem" — mitte "30 päeva." See kalkulaator järgib seda kalendrireegllit, mistõttu võib see erineda 1-2 päeva võrra tööriistadest, mis jagavad lihtsalt 30 või 365-ga.
How your age is worked out
Vanus on erinevus kahe kuupäeva vahel. On kaks ausust moodi selle vahe mõõtmiseks ja see tööriist näitab mõlemat.
1. Kalenderivanus (aastad, kuud, päevad). Loenda täisaastad oma sünnipäevast, seejärel täiskuud, seejärel jäänud päevad:
- Loenda täisaastad sünni järgselt.
- Viimase sünnipäeva järgi loenda täiskuud.
- Sealt loenda ülejäänud päevad.
Keeruliseks muudab osa 3, mis on kuu piiril. Keegi, kes sündis 31. jaanuaril, mõõdetuna 1. märtsil, on 1 kuu ja 1 päeva vana — sest "üks kuu pärast Jan 31" langeb Feb 28/29 (feb 31 pole), ja 1. märts on üks päev pärast seda. See kalkulaator piirdub lühema kuu lõpuga, vastates laialdaselt kasutatud dateutil.relativedelta reeglile, nii et kuu lõpu sünnipäevad ei anna kunagi negatiivset päevade loendust.
2. Kogu möödunud aeg (päevad, tunnid, sekundid). "Teie vanus teistes ühikutes" arvude jaoks teisendatakse kaks kuupäeva päevade koguarvuks ja korrutatakse välja:
Mõlemad kuupäevad on esimeselt tihvutud UTC keskööl, nii et daylight-saving muutused ei saa lisada või võtta ära tundi ja häirida päevade loendust. Nädalad on päevad ÷ 7 (ümardatud alla); tunnid, minutid ja sekundid on päevade arv skaleeritud.
Miks mitte lihtsalt jagada päevade arv 365-ga? Sest te libiseksite. Jagades 7305 päeva 365-ga saad 20,01 aastat; jagades 365,25-ga saad 20,00 — kuid kumbki ei tea, millised aastad olid liigaastad või milliseid kuude sa tegelikult läbisid. Kalenderite loendamine on täpne; päevade jagamine on lähendamine. Kasuta kalenderianust jaoks "kui vana ma olen" ja kogu päevade/nädalaid täpseks ajakuluks (ravimite ajaline arvestus, projektide kestus, saavutuste loendus).
Worked example
Sündinud 1. jaanuaril 2000, mõõdetuna 1. jaanuaril 2020:
| Mõõt | Väärtus |
|---|---|
| Kalenderivanus | 20 aastat, 0 kuud, 0 päeva |
| Kogu päevade arv | 7,305 |
| Kogu nädalate arv | 1,043 |
| Sünnipäeva nädalapäev | Laupäev |
7305 päevad = 20 × 365 + 5 liigapäeva (2000, 2004, 2008, 2012, 2016). See üksik detail — viis lisapäeva, mida enamik inimesi unustavad — on täpselt see, miks kalkulaator võidab peas arvutamist.
Age in code
Sama arvutus igas keeles. Kalendervanuse jaoks eelistage sisseehitatud kuupäeva teeki käsitsi aritmeetika asemel — see juba teab liigaastaid ja kuu pikkusi.
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
5Common questions
Kui vana ma täpselt olen? Sisestage oma sünniaeg ja jätke sihtkoht täna. Kalkulaator näitab teie vanust aastates, kuudes ja päevades ning kordab seda kogu päevades, nädalates, tundides ja sekundites.
Miks erineb minu vanus teisest kalkulaatorist? Peaaegu alati kuu/päeva jääk. Tööriistade hinnangud erinevad selle osas, kuidas lugeda päevade arvu pärast viimast täiskuu kuu piiril. See piirdub lühema kuuga (konventsioon relativedelta); tööriist, mis jagab 30-ga, erineb 1-2 päeva võrra.
Kas see käsitleb liigaaastaid ja 29. veebruari sünnipäevi? Jah. Päevade loendus sisaldab iga liigapäeva vahemikus ja 29. veebruari sünnipäeva mõõdetakse mitteleaastates 28. veebr / 1. märtsi suhtes ilma ületalitlemiseta.
Kas ma saan arvutada vanust möödunud või tulevase kuupäeva alusel? Jah — määrake väli "Vanus kuupäeval" mis tahes kuupäevale. Tulevane kuupäev ütleb teile, kui vana te siis ollete; möödunud kuupäev, kui vana te olite.
Mis ajaveebiga seotud? Kuupäevad normaliseeritakse enne loendamist UTC-ks, nii et kogu päeva kogusumma on stabiilne sõltumata sellest, kus te olete või kas daylight saving muutus.
Sources
- Python
dateutil—relativedelta(kalendri-vanuse kuu/päeva reegel, mida see tööriist järgib). - Java Platform —
Period.betweenjaChronoUnit.DAYS. - Microsoft Excel —
DATEDIFfunction. - MDN Web Docs —
Date. - Dershowitz, N., & Reingold, E. M. Calendrical Calculations: The Ultimate Edition. Cambridge University Press, 2018.