Калкулатор на възраст — Точна възраст в години, месеци и дни
Безплатен калкулатор на възраст: въведете вашата дата на раждане, за да получите точната си възраст в години, месеци и дни, плюс общо седмици, дни, часове и вашия следващ рожден ден.
Калкулатор на възраст
Вие сте роден/а на Monday
Следващ рожден ден: 144 дни оттам (навършваща 37)
Вашата възраст в други единици
Напредък на живота
Вашата възраст спрямо илюстративен 80-годишен референтен период.
Документация
Какво прави този калкулатор
Въведете вашата дата на раждане и той ви казва точно колко години имате - в години, месеци и дни - по начина, по който бихте го казали вслух ("Имам 33 години, 4 месеца и 5 дни"). Той също показва същата възраст преброена чисто в месеци, седмици, дни, часове, минути и секунди, денят на седмицата, в който сте роден/а, и времето до вашия следващ рожден ден.
Оставете второто поле на днешната дата за вашата текуща възраст или го променете на всяка преди това или бъдеща дата, за да намерите вашата възраст на тази дата.
Едното правило, което прави възрастта трудна: месеците и годините не са фиксиран брой дни. Февруари има 28 или 29; други месеци имат 30 или 31. Така че "1 месец" означава "същия номер на дня, един месец по-късно" - не "30 дни." Този калкулатор следва това правило от календара, което е причина той да се различава с един или два дни от инструментите, които просто делят на 30 или 365.
Как се изчислява вашата възраст
Възрастта е разликата между две дати. Има два честни начина да измерите тази разлика, и този инструмент показва и двата.
1. Възраст по календар (години, месеци, дни). Пребройте пълни години от вашия рожден ден, след това пълни месеци, след това оставащите дни:
- Пребройте пълни години от раждането.
- От последния рожден ден пребройте пълни месеци.
- От там пребройте оставащите дни.
Финантната част е стъпка 3 близо до границите на месеца. Някой роден на 31 януари, измерен на 1 март, е 1 месец и 1 ден стар - защото "един месец след янв. 31" пада на февруари 28/29 (няма февруари 31), и март 1 е един ден след това. Този калкулатор се фиксира до края на по-краткия месец, съответстващ на широко използваното правило dateutil.relativedelta, така че рождените дни на края на месеца никога не произвеждат отрицателен брой дни.
2. Общо протекло време (дни, часове, секунди). За цифрите на "вашата възраст в други единици", двете дати се преобразуват в брой пълни дни и се умножават:
И двете дати са закрепени към полунощ по UTC първо, така че промените при преминаването на лятното часуване не могат да добавят или отхвърлят час и да навредят на броя дни. Седмиците са дни ÷ 7 (закръглени надолу); часовете, минутите и секундите са броя дни мащабирани нагоре.
Защо не просто да разделим дните на 365? Защото бихте отклонились. Разделянето на 7,305 дни на 365 дава 20.01 години; разделянето на 365.25 дава 20.00 - но нито един не знае кои години бяха преносими години или кои месеци реално сте прежили. Броенето по календар е точно; разделянето на дни е приблизително. Използвайте възраст по календар за "колко години имам," и общо дни/седмици за точна работа с протекло време (времейн на лекарства, продължителност на проекти, отброявания на етапи).
Работен пример
Роден/а 1 януари 2000, измерен/а 1 януари 2020:
| Мярка | Стойност |
|---|---|
| Възраст по календар | 20 години, 0 месеца, 0 дни |
| Общо дни | 7,305 |
| Общо седмици | 1,043 |
| Ден от седмицата роден/а | събота |
7,305-те дни = 20 × 365 + 5 преносими дни (2000, 2004, 2008, 2012, 2016). Този един детайл - пет допълнителни дни, които повечето хора забравят - е точно защо калкулаторът е по-добър от устния смет.
Възраст в код
Същото изчисление на всеки език. За възраст по календар, предпочетайте вградена библиотека за дата пред ръчна аритметика - тя вече знае преносимите години и дължините на месеците.
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
5Често задавани въпроси
Колко години имам точно? Въведете вашата дата на раждане и оставете целта на днес. Калкулаторът показва вашата възраст в години, месеци и дни, и я повтаря в общо дни, седмици, часове и секунди.
Защо моята възраст се различава от друг калкулатор? Почти винаги остатък от месец/ден. Инструментите не се съгласяват как да freguesia дните след последния пълен месец на границите на месеците. Този се фиксира до по-краткия месец (конвенцията relativedelta); инструмент, който делит на 30, ще се различава с един или два дни.
Дали обработва преносимите години и рождени дни на 29 февруари? Да. Броевете на дни включват всеки преносим ден в диапазона, и рожден ден на 29 февруари се измерва спрямо 28 февруари / 1 март в не-преносимите години без преливане.
Мога ли да изчисля възраст на преди това или бъдещ ден? Да - задайте полето "Възраст на дата" на всяка дата. Бъдеща дата ви казва колко години ще бъдете тогава; преди това ден, колко години сте били.
Какво насчет часовите пояси? Датите се нормализират към UTC преди броене, така че общия брой дни остава стабилен независимо къде сте или дали дневното часуване се е променило.
Източници
- Python
dateutil—relativedelta(правилото за месец/ден на възраста по календар, което следва този инструмент). - Java Platform —
Period.betweenиChronoUnit.DAYS. - Microsoft Excel — функция
DATEDIF. - MDN Web Docs —
Date. - Dershowitz, N., & Reingold, E. M. Calendrical Calculations: The Ultimate Edition. Cambridge University Press, 2018.