Afegeix o resta temps d'una data utilitzant diferents unitats - anys, mesos, setmanes i dies. Útil per a la planificació de projectes, la programació i diversos càlculs basats en el temps.
La Calculadora de Calendari és una eina versàtil dissenyada per realitzar operacions aritmètiques de dates. Permet als usuaris afegir o restar unitats de temps (anys, mesos, setmanes i dies) d'una data determinada. Aquesta calculadora és particularment útil per a la planificació de projectes, la programació i diversos càlculs basats en el temps.
La calculadora de calendari utilitza l'algorisme següent per a càlculs de dates:
Per afegir/restar anys:
Per afegir/restar mesos:
Per afegir/restar setmanes:
Per afegir/restar dies:
Anys de traspàs: Quan s'afegeixen/resten anys, es presta especial atenció al 29 de febrer. Si l'any resultant no és un any de traspàs, la data es ajusta a 28 de febrer.
Dates de final de mes: Quan s'afegeixen/resten mesos, si la data resultant no existeix (per exemple, el 31 d'abril), es ajusta al darrer dia vàlid del mes (per exemple, el 30 d'abril).
Transició BCE/CE: La calculadora maneja les dates a través de la transició BCE/CE correctament, tenint en compte que no hi ha any 0 en el calendari gregorià.
Límits de dates: La calculadora respecta els límits del sistema de dates subjacents, normalment des de l'1 de gener de l'any 1 CE fins al 31 de desembre de l'any 9999 CE.
La Calculadora de Calendari té nombroses aplicacions pràctiques:
Gestió de projectes: Càlcul de terminis de projectes, dates de fites i durades de sprints.
Planificació financera: Determinació de dates de venciment de pagaments, termes de préstecs i dates de venciment d'inversions.
Planificació d'esdeveniments: Càlcul de dates per a esdeveniments recurrents, horaris de festivals o celebracions d'aniversaris.
Legal i contractual: Càlcul de terminis per a procediments legals, expiracions de contractes o períodes de notificació.
Planificació acadèmica: Determinació de dates d'inici/final de semestres, dates de venciment d'assignacions o cronologies de recerca.
Planificació de viatges: Càlcul de durades de viatges, dates d'expiració de visats o finestres de reserva.
Atenció sanitària: Programació de cites de seguiment, cicles de medicació o durades de tractament.
Fabricació i logística: Planificació d'horaris de producció, dates de lliurament o intervals de manteniment.
Tot i que la Calculadora de Calendari és versàtil, hi ha altres eines i mètodes per a la manipulació de dates i hores:
Funcions de fulls de càlcul: Programes com Microsoft Excel i Google Sheets ofereixen funcions de dates integrades per a càlculs simples.
Biblioteques de llenguatges de programació: La majoria dels llenguatges de programació tenen biblioteques robustes de dates/hora (per exemple, datetime en Python, Moment.js en JavaScript).
Calculadores de dates en línia: Diversos llocs web ofereixen eines de càlcul de dates simples, sovint amb enfocaments específics (per exemple, calculadores de dies laborals).
Programari de gestió de projectes: Eines com Microsoft Project o Jira inclouen funcions de càlcul de dates dins de les seves funcionalitats de programació.
Calculadores de timestamps Unix: Per a usuaris tècnics, aquestes eines treballen amb dates com a segons transcorreguts des de l'1 de gener de 1970.
Aplicacions mòbils: Moltes aplicacions de calendari i productivitat inclouen funcions de càlcul de dates.
El concepte d'aritmètica de dates ha evolucionat juntament amb el desenvolupament dels sistemes de calendari:
Civilitzacions antigues: Els egipcis, babilonis i maies van desenvolupar sistemes de calendari complexos, establint les bases per a càlculs de dates.
Calendari Julià (45 aC): Introduït per Juli Cèsar, va estandarditzar l'any solar i va introduir el concepte d'anys de traspàs, fent que els càlculs de dates a llarg termini fossin més precisos.
Calendari Gregorià (1582): Introduït pel papa Gregori XIII, va refinar la regla dels anys de traspàs del calendari Julià, millorant la precisió a llarg termini dels càlculs de dates.
Aprovació del temps estàndard (segle XIX): La introducció de zones horàries i temps estàndard va facilitar càlculs de dates i hores internacionals més precisos.
Era informàtica (segle XX): L'aparició dels ordinadors va portar al desenvolupament de diverses biblioteques i algorismes de dates/hora, fent que l'aritmètica de dates complexes fos accessible i ràpida.
Timestamp Unix (1970): Va introduir una manera estàndard de representar dates com a segons des de l'1 de gener de 1970, simplificant l'aritmètica de dates en sistemes informàtics.
ISO 8601 (1988): Aquesta norma internacional per a la representació de dates i hores va ajudar a estandarditzar l'aritmètica de dates a través de diferents sistemes i cultures.
Aquí hi ha alguns exemples de codi per realitzar càlculs de dates en diversos llenguatges de programació:
1from datetime import datetime, timedelta
2
3def add_time(date_str, years=0, months=0, weeks=0, days=0):
4 date = datetime.strptime(date_str, "%Y-%m-%d")
5
6 # Afegir anys i mesos
7 new_year = date.year + years
8 new_month = date.month + months
9 while new_month > 12:
10 new_year += 1
11 new_month -= 12
12 while new_month < 1:
13 new_year -= 1
14 new_month += 12
15
16 # Gestionar casos de final de mes
17 last_day_of_month = (datetime(new_year, new_month % 12 + 1, 1) - timedelta(days=1)).day
18 new_day = min(date.day, last_day_of_month)
19
20 new_date = date.replace(year=new_year, month=new_month, day=new_day)
21
22 # Afegir setmanes i dies
23 new_date += timedelta(weeks=weeks, days=days)
24
25 return new_date.strftime("%Y-%m-%d")
26
27## Exemple d'ús
28print(add_time("2023-01-31", months=1)) # Sortida: 2023-02-28
29print(add_time("2023-02-28", years=1)) # Sortida: 2024-02-28
30print(add_time("2023-03-15", weeks=2, days=3)) # Sortida: 2023-04-01
31
1function addTime(dateStr, years = 0, months = 0, weeks = 0, days = 0) {
2 let date = new Date(dateStr);
3
4 // Afegir anys i mesos
5 date.setFullYear(date.getFullYear() + years);
6 date.setMonth(date.getMonth() + months);
7
8 // Afegir setmanes i dies
9 date.setDate(date.getDate() + (weeks * 7) + days);
10
11 return date.toISOString().split('T')[0];
12}
13
14// Exemple d'ús
15console.log(addTime("2023-01-31", 0, 1)); // Sortida: 2023-02-28
16console.log(addTime("2023-02-28", 1)); // Sortida: 2024-02-28
17console.log(addTime("2023-03-15", 0, 0, 2, 3)); // Sortida: 2023-04-01
18
1import java.time.LocalDate;
2import java.time.Period;
3
4public class DateCalculator {
5 public static String addTime(String dateStr, int years, int months, int weeks, int days) {
6 LocalDate date = LocalDate.parse(dateStr);
7
8 // Afegir anys, mesos, setmanes i dies
9 LocalDate newDate = date
10 .plus(Period.ofYears(years))
11 .plus(Period.ofMonths(months))
12 .plus(Period.ofWeeks(weeks))
13 .plus(Period.ofDays(days));
14
15 return newDate.toString();
16 }
17
18 public static void main(String[] args) {
19 System.out.println(addTime("2023-01-31", 0, 1, 0, 0)); // Sortida: 2023-02-28
20 System.out.println(addTime("2023-02-28", 1, 0, 0, 0)); // Sortida: 2024-02-28
21 System.out.println(addTime("2023-03-15", 0, 0, 2, 3)); // Sortida: 2023-04-01
22 }
23}
24
Aquests exemples demostren com realitzar càlculs de dates en Python, JavaScript i Java, gestionant diversos casos límit com les dates de final de mes i els anys de traspàs.
Afegint 1 mes al 31 de gener de 2023:
Afegint 1 any al 29 de febrer de 2024 (un any de traspàs):
Resta de 2 setmanes i 3 dies del 15 de març de 2023:
Afegint 18 mesos al 31 de juliol de 2022:
Richards, E. G. (2013). Calendars. In S. E. Urban & P. K. Seidelmann (Eds.), Explanatory Supplement to the Astronomical Almanac (3rd ed., pp. 585-624). Mill Valley, CA: University Science Books.
Dershowitz, N., & Reingold, E. M. (2008). Calendrical Calculations (3rd ed.). Cambridge University Press.
Kuhn, M., & Johnson, K. (2013). Applied Predictive Modeling. Springer.
"Date and Time Classes". Oracle. https://docs.oracle.com/javase/8/docs/api/java/time/package-summary.html
"datetime — Basic date and time types". Python Software Foundation. https://docs.python.org/3/library/datetime.html
"Date". Mozilla Developer Network. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date
Descobreix més eines que podrien ser útils per al teu flux de treball