Calendar Calculator: Add or Subtract Time from Dates
Dodajte ili oduzmite vrijeme od datuma koristeći različite jedinice - godine, mjesece, tjedne i dane. Korisno za planiranje projekata, raspoređivanje i razne proračune temeljen na vremenu.
Kalkulator kalendara
Dokumentacija
Kalendar Kalkulator
Uvod
Kalendar Kalkulator je svestran alat dizajniran za izvođenje aritmetičkih operacija s datumima. Omogućuje korisnicima da dodaju ili oduzimaju vremenske jedinice (godine, mesece, nedelje i dane) od datog datuma. Ovaj kalkulator je posebno koristan za planiranje projekata, raspoređivanje i razne proračune vezane za vreme.
Formula
Kalendar kalkulator koristi sledeći algoritam za proračune datuma:
-
Za dodavanje/oduzimanje godina:
- Dodajte/oduzmite određeni broj godina od godine datuma.
- Ako je rezultantni datum 29. februar, a nova godina nije prestupna, prilagodite na 28. februar.
-
Za dodavanje/oduzimanje meseci:
- Dodajte/oduzmite određeni broj meseci od meseca datuma.
- Ako je rezultantni mesec veći od 12, povećajte godinu i prilagodite mesec u skladu s tim.
- Ako je rezultantni mesec manji od 1, smanjite godinu i prilagodite mesec u skladu s tim.
- Ako rezultantni datum ne postoji (npr. 31. april), prilagodite na poslednji dan meseca.
-
Za dodavanje/oduzimanje nedelja:
- Pretvorite nedelje u dane (1 nedelja = 7 dana) i nastavite s proračunom dana.
-
Za dodavanje/oduzimanje dana:
- Koristite osnovnu biblioteku datuma za izvođenje aritmetike dana, koja automatski obrađuje:
- Prestupne godine
- Prelaze meseca
- Prelaze godine
- Koristite osnovnu biblioteku datuma za izvođenje aritmetike dana, koja automatski obrađuje:
Ivica slučajevi i razmatranja
-
Prestupne godine: Kada dodajete/oduzimate godine, posebna pažnja se posvećuje 29. februaru. Ako rezultantna godina nije prestupna, datum se prilagođava na 28. februar.
-
Datumi na kraju meseca: Kada dodajete/oduzimate mesece, ako rezultantni datum ne postoji (npr. 31. april), prilagođava se na poslednji važeći datum meseca (npr. 30. april).
-
Prelaz između BCE/CE: Kalkulator pravilno obrađuje datume preko prelaza između BCE/CE, uzimajući u obzir da u gregorijanskom kalendaru ne postoji godina 0.
-
Ograničenja datuma: Kalkulator poštuje ograničenja osnovnog sistema datuma, obično od 1. januara 1. CE do 31. decembra 9999. CE.
Upotrebe
Kalendar Kalkulator ima brojne praktične primene:
-
Upravljanje projektima: Izračunavanje rokova projekata, datuma ključnih tačaka i trajanja sprinta.
-
Finansijsko planiranje: Utvrđivanje datuma dospeća plaćanja, uslova zajma i datuma dospeća investicija.
-
Planiranje događaja: Izračunavanje datuma za ponavljajuće događaje, rasporede festivala ili proslave godišnjica.
-
Pravni i ugovorni: Izračunavanje rokova za pravne postupke, isteke ugovora ili obaveštenja.
-
Akademsko planiranje: Utvrđivanje datuma početka/kraja semestra, rokova za zadatke ili vremenskih okvira istraživanja.
-
Planiranje putovanja: Izračunavanje trajanja putovanja, datuma isteka vize ili prozora za rezervaciju.
-
Zdravstvo: Planiranje kontrolnih pregleda, ciklusa medikacija ili trajanja tretmana.
-
Proizvodnja i logistika: Planiranje rasporeda proizvodnje, datuma isporuke ili intervala održavanja.
Alternativa
Iako je Kalendar Kalkulator svestran, postoje i drugi alati i metode za manipulaciju datumima i vremenom:
-
Funkcije u tabelama: Programi poput Microsoft Excel-a i Google Sheets-a nude ugrađene funkcije za datume za jednostavne proračune.
-
Biblioteke programskih jezika: Većina programskih jezika ima robusne biblioteke za datume/vreme (npr. datetime u Pythonu, Moment.js u JavaScript-u).
-
Online kalkulatori datuma: Razne web stranice nude jednostavne alate za proračun datuma, često sa specifičnim fokusima (npr. kalkulatori radnih dana).
-
Softver za upravljanje projektima: Alati poput Microsoft Project-a ili Jira uključuju funkcije proračuna datuma unutar svojih funkcionalnosti raspoređivanja.
-
Kalkulatori Unix vremenskih oznaka: Za tehničke korisnike, ovi alati rade s datumima kao sekundama koje su prošle od 1. januara 1970.
-
Mobilne aplikacije: Mnoge aplikacije za kalendar i produktivnost uključuju funkcije proračuna datuma.
Istorija
Koncept aritmetike datuma evoluirao je zajedno s razvojem kalendarskih sistema:
-
Stare civilizacije: Egipćani, Babilonci i Maje razvili su složene kalendarske sisteme, postavljajući temelje za proračune datuma.
-
Julijanski kalendar (45. pne): Uveo ga je Julije Cezar, standardizovao je solarne godine i uveo koncept prestupnih godina, čineći dugoročne proračune datuma preciznijim.
-
Gregorijanski kalendar (1582): Uveo ga je papa Grgur XIII, poboljšao je pravilo o prestupnim godinama julijanskog kalendara, poboljšavajući dugoročnu tačnost proračuna datuma.
-
Usvajanje standardnog vremena (19. vek): Uvođenje vremenskih zona i standardnog vremena omogućilo je preciznije međunarodne proračune datuma i vremena.
-
Era računara (20. vek): Pojava računara dovela je do razvoja raznih biblioteka i algoritama za datume/vreme, čineći složenu aritmetiku datuma dostupnom i bržom.
-
Unix vremenska oznaka (1970): Uveo je standardni način predstavljanja datuma kao sekundi od 1. januara 1970, pojednostavljujući aritmetiku datuma u računarima.
-
ISO 8601 (1988): Ovaj međunarodni standard za predstavljanje datuma i vremena pomogao je da se standardizuje aritmetika datuma širom različitih sistema i kultura.
Primeri
Evo nekoliko primera koda za izvođenje proračuna datuma u raznim programskim jezicima:
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 # Dodajte godine i mesece
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 # Obrađivanje slučajeva na kraju meseca
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 # Dodajte nedelje i dane
23 new_date += timedelta(weeks=weeks, days=days)
24
25 return new_date.strftime("%Y-%m-%d")
26
27## Primer korišćenja
28print(add_time("2023-01-31", months=1)) # Izlaz: 2023-02-28
29print(add_time("2023-02-28", years=1)) # Izlaz: 2024-02-28
30print(add_time("2023-03-15", weeks=2, days=3)) # Izlaz: 2023-04-01
31
1function addTime(dateStr, years = 0, months = 0, weeks = 0, days = 0) {
2 let date = new Date(dateStr);
3
4 // Dodajte godine i mesece
5 date.setFullYear(date.getFullYear() + years);
6 date.setMonth(date.getMonth() + months);
7
8 // Dodajte nedelje i dane
9 date.setDate(date.getDate() + (weeks * 7) + days);
10
11 return date.toISOString().split('T')[0];
12}
13
14// Primer korišćenja
15console.log(addTime("2023-01-31", 0, 1)); // Izlaz: 2023-02-28
16console.log(addTime("2023-02-28", 1)); // Izlaz: 2024-02-28
17console.log(addTime("2023-03-15", 0, 0, 2, 3)); // Izlaz: 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 // Dodajte godine, mesece, nedelje i dane
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)); // Izlaz: 2023-02-28
20 System.out.println(addTime("2023-02-28", 1, 0, 0, 0)); // Izlaz: 2024-02-28
21 System.out.println(addTime("2023-03-15", 0, 0, 2, 3)); // Izlaz: 2023-04-01
22 }
23}
24
Ovi primeri prikazuju kako izvršiti proračune datuma u Pythonu, JavaScriptu i Javi, obrađujući različite ivice slučajeva poput datuma na kraju meseca i prestupnih godina.
Numerički primeri
-
Dodavanje 1 meseca 31. januaru 2023:
- Ulaz: 2023-01-31, Dodajte 1 mesec
- Izlaz: 2023-02-28 (28. februar 2023)
-
Dodavanje 1 godine 29. februaru 2024 (prestupna godina):
- Ulaz: 2024-02-29, Dodajte 1 godinu
- Izlaz: 2025-02-28 (28. februar 2025)
-
Oduzimanje 2 nedelje i 3 dana od 15. marta 2023:
- Ulaz: 2023-03-15, Oduzmite 2 nedelje i 3 dana
- Izlaz: 2023-02-26 (26. februar 2023)
-
Dodavanje 18 meseci 31. julu 2022:
- Ulaz: 2022-07-31, Dodajte 18 meseci
- Izlaz: 2024-01-31 (31. januar 2024)
Reference
-
Richards, E. G. (2013). Kalendar. U S. E. Urban & P. K. Seidelmann (Eds.), Objašnjavajući dodatak Astronomskom Almanahu (3. izd., str. 585-624). Mill Valley, CA: University Science Books.
-
Dershowitz, N., & Reingold, E. M. (2008). Kalendarni proračuni (3. izd.). Cambridge University Press.
-
Kuhn, M., & Johnson, K. (2013). Primenjeno prediktivno modeliranje. Springer.
-
"Klase datuma i vremena". Oracle. https://docs.oracle.com/javase/8/docs/api/java/time/package-summary.html
-
"datetime — Osnovni tipovi datuma i vremena". Python Software Foundation. https://docs.python.org/3/library/datetime.html
-
"Datum". Mozilla Developer Network. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date
Povratne informacije
Kliknite na povratnu informaciju da biste počeli davati povratne informacije o ovom alatu
Povezani alati
Otkrijte više alata koji bi mogli biti korisni za vaš radni proces