Calculadora d'Edat — Edat Exacta en Anys, Mesos i Dies
Calculadora d'edat gratuïta: introduïu la vostra data de naixement per obtenir la vostra edat exacta en anys, mesos i dies, més setmanes totals, dies, hores i el vostre pròxim aniversari.
Calculadora d'Edat
Vau néixer un Monday
Pròxim aniversari: 144 dies més (complint 37)
La vostra edat en altres unitats
Progressió de la vida
La vostra edat respecte a un interval de referència il·lustratiu de 80 anys.
Documentació
Què fa aquesta calculadora
Introduïu la vostra data de naixement i us dirà exactament quants anys teniu — en anys, mesos i dies — de la mateixa manera que ho dirieu en veu alta ("Tinc 33 anys, 4 mesos i 5 dies"). També mostra aquesta mateixa edat comptada purament en mesos, setmanes, dies, hores, minuts i segons, el dia de la setmana en què vau néixer, i quant temps falta fins al vostre pròxim aniversari.
Deixeu el segon camp per a avui per a la vostra edat actual, o canvieu-lo a qualsevol data passada o futura per trobar la vostra edat en aquesta data.
L'única regla que fa que les edats siguin complicades: els mesos i anys no són un nombre fix de dies. Febrer té 28 o 29; altres mesos en tenen 30 o 31. Per tant, "1 mes" significa "el mateix dia número, un mes més tard" — no "30 dies". Aquesta calculadora segueix aquesta regla del calendari, per la qual cosa pot diferir d'un o dos dies dels programes que només divideixen per 30 o 365.
Com es calcula la vostra edat
L'edat és la diferència entre dues dates. Hi ha dues maneres honestos de mesurar aquesta diferència, i aquesta eina mostra ambdues.
1. Edat calendari (anys, mesos, dies). Compteu anys sencers des del vostre aniversari, després mesos sencers, després els dies restants:
- Compteu els anys complerts des del naixement.
- Des de l'últim aniversari, compteu els mesos complerts.
- Compteu els dies restants.
La part subtil és el pas 3 prop dels límits de mesos. Algú nascut el 31 de gener, mesurat el 1 de març, té 1 mes i 1 dia — perquè "un mes després de gen 31" cau el 28/29 de febrer (no hi ha gen 31 de febrer), i el 1 de març és un dia després. Aquesta calculadora es limita al final del mes més curt, coincidint amb la regla dateutil.relativedelta molt utilitzada perquè els aniversaris de final de mes mai produceixin un recompte de dies negatiu.
2. Temps transcorregut total (dies, hores, segons). Per a les figures de "edat en altres unitats", les dues dates es converteixen en un recompte de dies complerts i es multipliquen:
Ambdues dates es fixa primer a mitjanit UTC, perquè els canvis d'estalvi de llum diürna no puguin afegir o deixar caure una hora i arruïnar el recompte de dies. Les setmanes són dies ÷ 7 (arrodonides cap a baix); les hores, minuts i segons són el recompte de dies escalat.
Per què no només dividir dies per 365? Perquè derivarieu. Dividir 7.305 dies per 365 dóna 20,01 anys; dividir per 365,25 dóna 20,00 — però cap d'ells sap quins anys van ser bisestos o quins mesos vau viure realment. El recompte calendari és exacte; la divisió de dies és una aproximació. Utilitzeu edat calendari per a "quants anys tinc" i dies/setmanes totals per a feina de temps transcorregut precís (temps de medicació, durada de projectes, comptatges de fites).
Exemple desenvolupat
Nascut 1 de gener de 2000, mesurat 1 de gener de 2020:
| Mesura | Valor |
|---|---|
| Edat calendari | 20 anys, 0 mesos, 0 dies |
| Dies totals | 7.305 |
| Setmanes totals | 1.043 |
| Dia de la setmana nascut | Dissabte |
Els 7.305 dies = 20 × 365 + 5 dies bisestos (2000, 2004, 2008, 2012, 2016). Aquell únic detall — cinc dies extra que la majoria de la gent oblida — és exactament per què una calculadora supera les matemàtiques mentals.
Edat en codi
El mateix càlcul en cada idioma. Per a edat calendari, preferiu una biblioteca de dates integrada sobre aritmètica feta a mà — ja sap anys bisestos i longituds de mesos.
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
5Preguntes habituals
Quina és la meva edat exacta? Introduïu la vostra data de naixement i deixeu la destinació per a avui. La calculadora mostra la vostra edat en anys, mesos i dies, i la repeteix en dies totals, setmanes, hores i segons.
Per què la meva edat difereix d'una altra calculadora? Gairebé sempre el residu de mes/dia. Els programes no estan d'acord sobre com comptar els dies després de l'últim mes complet als límits dels mesos. Aquest es limita al mes més curt (la convenció relativedelta); un programa que divideix per 30 diferirà d'un o dos dies.
Maneja anys bisestos i aniversaris del 29 de febrer? Sí. Els recomptes de dies inclouen cada dia bisest a l'interval, i un aniversari del 29 de febrer es mesura contra el 28 de febrer / 1 de març en anys no bisestos sense desbordament.
Puc calcular l'edat en una data passada o futura? Sí — establiu el camp "Edat a la data" a qualsevol data. Una data futura us diu quants anys tindreu llavors; una data passada, quants en teníeu.
Què hi ha sobre les zones horàries? Les dates es normalitzen a UTC abans de comptar, de manera que el total de sencers dies és estable no importa on esteu ni si es va canviar l'estalvi de llum diürna.
Fonts
- Python
dateutil—relativedelta(la regla de mes/dia d'edat calendari que aquesta eina segueix). - Java Platform —
Period.betweeniChronoUnit.DAYS. - Microsoft Excel — Funció
DATEDIF. - MDN Web Docs —
Date. - Dershowitz, N., & Reingold, E. M. Calendrical Calculations: The Ultimate Edition. Cambridge University Press, 2018.