Kalkulator godina — Točna godina u godinama, mjesecima i danima
Besplatni kalkulator godina: unesite datum vašeg rođenja da dobijete točnu godinu u godinama, mjesecima i danima, plus ukupno tjedne, dane, sate i sljedeći rođendan.
Kalkulator godina
Rođeni/a ste u Monday
Sljedeći rođendan: 144 dana dalje (punite 37)
Vaše godine u drugim jedinicama
Napredak života
Vaša godina protiv ilustrativnog raspona od 80 godina.
Dokumentacija
Što ovaj kalkulator radi
Unesite vašu datum rođenja i pokazat će vam točno koliko imate godina — u godinama, mjesecima i danima — na isti način kao što biste to rekli naglas ("Imam 33 godine, 4 mjeseca i 5 dana"). Prikazuje i istu godinu brojanu samo u mjesecima, tjednima, danima, satima, minutama i sekundama, te dan u tjednu kada ste se rodili, i koliko vremena do vašeg sljedećeg rođendana.
Ostavite drugo polje na danas za vašu trenutnu godinu, ili ga promijenite na bilo koji prošli ili budući datum da pronađete vašu godinu na taj datum.
Jedno pravilo koje godina čini kompliciranom: mjeseci i godine nisu fiksni broj dana. Februar ima 28 ili 29; ostali mjeseci imaju 30 ili 31. Dakle "1 mjesec" znači "isti broj dana, jedan mjesec kasnije" — ne "30 dana." Ovaj kalkulator slijedi to pravilo kalendara, što je zašto može razlikovati za dan ili dva od alata koji samo dijele sa 30 ili 365.
Kako se vaša godina računa
Godina je razlika između dva datuma. Postoje dva poštena načina za mjerenje te razlike, i ovaj alat prikazuje oba.
1. Kalendarska godina (godine, mjeseci, dani). Brojite pune godine od vašeg rođendana, zatim pune mjesece, zatim preostale dane:
- Brojite pune godine od rođenja.
- Od posljednjeg rođendana, brojite pune mjesece.
- Odatle brojite preostale dane.
Suptilni dio je korak 3 blizu granica mjeseca. Netko rođen na 31. siječnja, mjereno na 1. ožujka, je 1 mjesec i 1 dan star — jer "jedan mjesec nakon 31. siječnja" pada na 28/29. veljače (nema 31. veljače), a 1. ožujka je jedan dan nakon toga. Ovaj kalkulator stisće na kraj kraćeg mjeseca, što odgovara široko korištenom dateutil.relativedelta pravilu tako da rođendani na kraju mjeseca nikada ne proizvode negativan broj dana.
2. Ukupno proteklo vrijeme (dani, sati, sekunde). Za brojeve "vaša godina u drugim jedinicama", dva datuma se pretvaraju u broj potpunih dana i množe:
Oba datuma se prvo fiksiraju na UTC ponoć, tako da promjene ljetnog vremena ne mogu dodati ili oduzeti sat i baciti brojanje dana. Tjedni su dani ÷ 7 (zaokruženo); sati, minute i sekunde su brojanje dana skaliran.
Zašto ne samo podijeliti dane sa 365? Jer biste plutali. Dijeljenje 7.305 dana sa 365 daje 20,01 godina; dijeljenje sa 365,25 daje 20,00 — ali nijedan ne zna koji godini su bili prestupne godine ili kroz koje mesece ste zapravo živjeli. Brojanje kalendara je točno; dijeljenje dana je aproksimacija. Koristite kalendarsku godinu za "koliko sam star/a", a ukupne dane/tjedne za precizne radove s vremenom (vrijeme lijeka, trajanja projekta, odbrojavanje miljenika).
Radni primjer
Rođen/a 1. siječnja 2000., mjereno 1. siječnja 2020.:
| Mjera | Vrijednost |
|---|---|
| Kalendarska godina | 20 godina, 0 mjeseci, 0 dana |
| Ukupno dana | 7.305 |
| Ukupno tjedni | 1.043 |
| Dan u tjednu rođenja | Subota |
7.305 dana = 20 × 365 + 5 prestupnih dana (2000, 2004, 2008, 2012, 2016). Ta jedinstvena činjenica — pet dodatnih dana koje većina ljudi zaboravi — je točno zašto je kalkulator bolji od mentalne matematike.
Godina u kodu
Ista računica na svakom jeziku. Za kalendarsku godinu, preferira ugrađenu biblioteku datuma umjesto samodovoljne aritmetike — ona već zna prestupne godine i duljine mjeseci.
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Česta pitanja
Koliko sam točno star/a? Unesite svoj datum rođenja i ostavite cilj na danas. Kalkulator prikazuje vašu godinu u godinama, mjesecima i danima, te je ponavlja u ukupnim danima, tjednima, satima i sekundama.
Zašto se moja godina razlikuje od drugog kalkulatora? Gotovo uvijek ostatak mjeseca/dana. Alati se nesuglasni kako brojati dane nakon posljednjeg cijelog mjeseca na granicama mjeseca. Ovaj stisće na kraći mjesec (konvencija relativedelta); alat koji dijeli sa 30 razlikovati će se za dan ili dva.
Rukuje li to prestupnim godinama i 29. veljače rođendanima? Da. Brojanja dana uključuju sve prestupne dane u rasponu, a 29. veljače rođendan se mjeri prema 28. veljače / 1. ožujka u ne-prestupnim godinama bez prekoračenja.
Mogu li izračunati godinu na prošli ili budući datum? Da — postavite polje "Godine na datum" na bilo koji datum. Budući datum vam pokazuje koliko ćete biti star/a tada; prošli datum, koliko ste bili.
Što je s vremenskim zonama? Datumi se normaliziraju na UTC prije brojanja, tako da je ukupno cijelog dana stabilan bez obzira gdje se nalazite ili je li se ljetno vrijeme promijenilo.
Izvori
- Python
dateutil—relativedelta(pravilo godine/mjeseca/dana kalkulatora koji ovaj alat slijedi). - Java Platform —
Period.betweeniChronoUnit.DAYS. - Microsoft Excel —
DATEDIFfunkcija. - MDN Web Docs —
Date. - Dershowitz, N., & Reingold, E. M. Calendrical Calculations: The Ultimate Edition. Cambridge University Press, 2018.