Прескочи към съдържанието

Калкулатор на възраст — Точна възраст в години, месеци и дни

Безплатен калкулатор на възраст: въведете вашата дата на раждане, за да получите точната си възраст в години, месеци и дни, плюс общо седмици, дни, часове и вашия следващ рожден ден.

Калкулатор на възраст

Точна възраст
36 години 7 месеца 26 дни

Вие сте роден/а на Monday

Следващ рожден ден: 127 дни оттам (навършваща 37)

Вашата възраст в други единици

Месеца
439
Седмици
1,912
Дни
13,387
Часове
321,288
Минути
19,277,280
Секунди
1,156,636,800

Напредък на живота

Вашата възраст спрямо илюстративен 80-годишен референтен период.

Визуализация на възраст3636 / 80 години080
Калкулатор за зареждане...
📚

Документация

Какво представлява калкулаторът за възраст?

Калкулаторът за възраст намира точния период между две дати: дата на раждане и целева дата, обикновено днешната. Той показва резултата като години, месеци и дни, както и като общ брой месеци, седмици, дни, часове, минути и секунди. Възрастта може да се изчисли и за минала или бъдеща дата, което показва на колко години е бил или ще бъде човекът на този ден.

Как се изчислява възраст

Възрастта е разликата между две календарни дати. Има два правилни начина да се опише тази разлика и всеки е полезен за различни цели.

Календарна възраст (години, месеци, дни)

Това е обичайният начин, по който хората посочват възрастта си, например „на 33 години, 4 месеца и 5 дни“. Тя се определя на три стъпки:

  1. Броят се пълните години, изминали от датата на раждане.
  2. От последния рожден ден се броят пълните изминали месеци.
  3. След това се броят останалите дни.

Стъпка 3 създава трудности към края на месеца, тъй като месеците нямат еднакъв брой дни. Човек, роден на 31 януари, чиято възраст се измерва на 1 март, е на 1 месец и 1 ден. Един месец след 31 януари е 28 февруари (или 29 февруари във високосна година), тъй като няма 31 февруари. 1 март е един ден след това. Този метод, понякога наричан правилото relativedelta по името на библиотеката за Python, която го популяризира, ограничава датата на годишнината до последния ден на по-краткия месец, така че броят на дните никога да не става отрицателен.

Общо изминало време (дни, часове, секунди)

За прецизно изчисляване на изживяното време и двете дати се преобразуват в една времева точка и разликата се изчислява в цели дни:

d=⌊t−b86400000⌋d = \left\lfloor \frac{t - b}{86400000} \right\rfloor

където d е броят на целите дни, t е целевата дата, а b е датата на раждане, като всяка от тях се представя като брой милисекунди, а делителят е броят милисекунди в едно денонощие.

И двете дати се задават на полунощ по UTC (координирано универсално време) преди изваждането. Това предотвратява добавянето или премахването на час при преминаване към лятно часово време и изкривяването на броя дни. От общия брой дни седмиците се получават чрез деление на 7 и закръгляне надолу. Часовете, минутите и секундите са броят дни, умножен съответно по 24, 1 440 и 86 400.

Делението на общия брой дни на 365 или 365,25 дава приблизителна възраст в години, но не отчита кои години в този период са високосни. Календарното броене, описано по-горе, е точно. Използвайте календарната възраст, за да отговорите на въпроса „На колко години съм?“. Използвайте общия брой дни или седмици за задачи, които изискват прецизно изминало време, например определяне на времето за прием на лекарствени дози или отброяване до важен момент.

Пример с решение

Човек, роден на 1 януари 2000 г., чиято възраст се измерва на 1 януари 2020 г.:

МяркаСтойност
Календарна възраст20 години, 0 месеца, 0 дни
Общо месеци240
Общо седмици1 043
Общо дни7 305
Общо часове175 320
Общо минути10 519 200
Общо секунди631 152 000
Ден от седмицата на ражданеСъбота

Общият брой от 7 305 дни се равнява на 20 × 365 плюс 5 високосни дни за високосните години 2000, 2004, 2008, 2012 и 2016. Всяка от тези години е добавила по един 29 февруари, който попада в рамките на периода от 20 години. Затова броят на дните е по-голям от простото 20 × 365 и изчисляването му на ръка лесно може да доведе до грешка от няколко дни.

Формула за изчисляване на възрастта в код

Описаният по-горе метод за календарна възраст може да се реализира на повечето програмни езици. Използването на вградена библиотека за дати е по-надеждно от ръчното изписване на правилата за високосните години и дължината на месеците.

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
11

Microsoft предупреждава, че аргументът "md" може да върне отрицателно число или неправилен брой дни в близост до границите между месеците, затова частта за оставащите дни във формулата не винаги съвпада с описаното по-горе правило за ограничаване.

Често задавани въпроси

Как да намеря точната си възраст? Въведете дата на раждане и задайте днешната дата като целева. Резултатът показва възрастта в години, месеци и дни, както и същата възраст като общ брой дни, седмици, часове и секунди.

Защо два калкулатора за възраст дават различни отговори? Разликата обикновено е в начина, по който се броят оставащите дни в близост до границата между месеците. Калкулатор, който ограничава датата до по-краткия месец в края на месеца, както е описано по-горе, може да се различава с един или два дни от калкулатор, който просто разделя изминалото време на 30.

Изчислението отчита ли високосните години? Да. Общият брой дни включва всеки 29 февруари, който попада между двете дати. В година без 29 февруари годишнината от раждането на човек, роден във високосен ден, се брои като 28 февруари, последния ден от този месец. Човек, роден на 29 февруари 1996 г., е на 26 години, 11 месеца и 22 дни на 20 февруари 2023 г., а следващият му рожден ден се пада 8 дни по-късно — на 28 февруари 2023 г..

Може ли възрастта да се изчисли за дата в миналото или бъдещето? Да. Задаването на бъдеща дата показва на колко години ще бъде човекът на този ден. Задаването на минала дата показва на колко години е бил. Самата дата на раждане не може да бъде в бъдещето, а целевата дата не може да предхожда датата на раждане.

Влияят ли часовите зони върху резултата? Не. И двете дати се преобразуват в полунощ по UTC преди изчисляването на броя дни, така че общият резултат остава същият независимо от местоположението на потребителя или промените към лятно часово време.

Защо броят на дните се различава от делението на дните на 365,25? 365,25 е само средната продължителност на годината; той не отчита кои конкретни години в периода са високосни години с 366 дни. Броенето на целите дни между две реални календарни дати е точно.

Източници

  1. Python dateutil — relativedelta, описаното по-горе правило за месеците и дните при изчисляване на календарна възраст.
  2. Java Platform — Period.between и ChronoUnit.DAYS.
  3. Microsoft Excel — функцията DATEDIF.
  4. MDN Web Docs — Date.
  5. Dershowitz, N., и Reingold, E. M. Calendrical Calculations: The Ultimate Edition. Cambridge University Press, 2018.