Calculadora de Calendari per a Càlculs de Dates
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.
Calculadora de Calendari
Documentació
Calculadora de Calendari
Introducció
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.
Fórmula
La calculadora de calendari utilitza l'algorisme següent per a càlculs de dates:
-
Per afegir/restar anys:
- Afegir/restar el nombre especificat d'anys a/from el component d'any de la data.
- Si la data resultant és el 29 de febrer i el nou any no és un any de traspàs, ajustar a 28 de febrer.
-
Per afegir/restar mesos:
- Afegir/restar el nombre especificat de mesos a/from el component de mes de la data.
- Si el mes resultant és superior a 12, incrementar l'any i ajustar el mes en conseqüència.
- Si el mes resultant és inferior a 1, decrementar l'any i ajustar el mes en conseqüència.
- Si la data resultant no existeix (per exemple, el 31 d'abril), ajustar al darrer dia del mes.
-
Per afegir/restar setmanes:
- Convertir setmanes a dies (1 setmana = 7 dies) i procedir amb el càlcul de dies.
-
Per afegir/restar dies:
- Utilitzar la biblioteca de dates subjacents per realitzar l'aritmètica de dies, que maneja automàticament:
- Anys de traspàs
- Transicions de mes
- Transicions d'any
- Utilitzar la biblioteca de dates subjacents per realitzar l'aritmètica de dies, que maneja automàticament:
Casos límit i consideracions
-
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.
Casos d'ús
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.
Alternatives
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.
Història
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.
Exemples
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.
Exemples numèrics
-
Afegint 1 mes al 31 de gener de 2023:
- Entrada: 2023-01-31, Afegir 1 mes
- Sortida: 2023-02-28 (28 de febrer de 2023)
-
Afegint 1 any al 29 de febrer de 2024 (un any de traspàs):
- Entrada: 2024-02-29, Afegir 1 any
- Sortida: 2025-02-28 (28 de febrer de 2025)
-
Resta de 2 setmanes i 3 dies del 15 de març de 2023:
- Entrada: 2023-03-15, Resta 2 setmanes i 3 dies
- Sortida: 2023-02-26 (26 de febrer de 2023)
-
Afegint 18 mesos al 31 de juliol de 2022:
- Entrada: 2022-07-31, Afegir 18 mesos
- Sortida: 2024-01-31 (31 de gener de 2024)
Referències
-
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
Retroalimentació
Feu clic al toast de feedback per començar a donar feedback sobre aquesta eina
Eines Relacionades
Descobreix més eines que podrien ser útils per al teu flux de treball