Dodajte ili oduzmite vreme od datuma koristeći različite jedinice - godine, mesece, nedelje i dane. Korisno za planiranje projekata, zakazivanje i razne proračune zasnovane na vremenu.
Календарски калкулатор је свестрани алат дизајниран за извршавање операција аритметике датума. Омогућава корисницима да додају или одузимају временске јединице (године, месеце, недеље и дане) од датог датума. Овај калкулатор је посебно користан за планирање пројеката, распоред и разне прорачуне засноване на времену.
Календарски калкулатор користи следећи алгоритам за прорачуне датума:
За додавање/одузимање година:
За додавање/одузимање месеци:
За додавање/одузимање недеља:
За додавање/одузимање дана:
Године прелета: Када додајете/одузимате године, посебна пажња се посвећује 29. фебруару. Ако резултујућа година није година прелета, датум се прилагођава на 28. фебруар.
Датуми на крају месеца: Када додајете/одузимате месеце, ако резултујући датум не постоји (нпр. 31. април), прилагођава се на последњи важећи датум у месецу (нпр. 30. април).
Прелаз из БЦЕ у CE: Календарски калкулатор исправно обрађује датуме преко прелаза из БЦЕ у CE, узимајући у обзир да у Грегоријанском календару не постоји година 0.
Ограничења датума: Календарски калкулатор поштује ограничења основног система датума, обично од 1. јануара 1. CE до 31. децембра 9999. CE.
Календарски калкулатор има бројне практичне примене:
Управљање пројектима: Прорачун рокова пројекта, датума прекретница и трајања спринта.
Финансијско планирање: Одређивање датума доспећа плаћања, рокова кредита и датума доспећа инвестиција.
Планирање догађаја: Прорачун датума за поновљене догађаје, распоред фестивала или прослава годишњица.
Правни и уговорни: Прорачун рокова за правне поступке, истек уговора или рокове обавештења.
Академско планирање: Одређивање датума почетка/краја семестра, датума доспећа задатака или временских оквира истраживања.
Планирање путовања: Прорачун трајања путовања, датума истека виза или рокова за резервације.
Здравство: Планирање следећих прегледа, циклуса лекова или трајања лечења.
Производња и логистика: Планирање производних распореда, датума испоруке или интервала одржавања.
Иако је Календарски калкулатор свестран, постоје и други алати и методе за манипулацију датумом и временом:
Функције у табелама: Програми као што су Microsoft Excel и Google Sheets нуде уграђене функције датума за једноставне прорачуне.
Библиотеке програмских језика: Већина програмских језика имају робусне библиотеке датума/времена (нпр. datetime у Питону, Moment.js у ЈаваСкрипту).
Онлајн калкулатори датума: Различите веб странице нуде једноставне алате за прорачун датума, често с посебним фокусом (нпр. калкулатори радних дана).
Софтвер за управљање пројектима: Алати као што су Microsoft Project или Jira укључују функције прорачуна датума унутар својих функција распоређивања.
Калкулатори Unix временских ознака: За техничке кориснике, ови алати раде с датумима као секундама које су прошле од 1. јануара 1970.
Мобилне апликације: Многе апликације за календар и продуктивност укључују функције прорачуна датума.
Концепт аритметике датума развијао се паралелно с развојем календарских система:
Древне цивилизације: Египћани, Вавилонци и Маји развили су сложене календарске системе, постављајући темеље за прорачуне датума.
Јулијански календар (45. пне): Увео га је Јулије Цезар, стандардизовао је соларну годину и увео концепт година прелета, чинећи дугорочне прорачуне датума прецизнијим.
Грегоријански календар (1582): Увео га је папа Гргур XIII, усавршио је правило о годинама прелета Јулијанског календара, побољшавајући дугорочну прецизност прорачуна датума.
Увођење стандардног времена (19. век): Увођење временских зона и стандардног времена олакшало је прецизније међународне прорачуне датума и времена.
Ера рачунара (20. век): Поява рачунара довела је до развоја разних библиотека и алгоритама за датуме/времена, чинећи сложену аритметику датума доступном и брзом.
Unix временска ознака (1970): Увела је стандардни начин представљања датума као секунди од 1. јануара 1970, поједностављујући аритметику датума у рачунарским системима.
ISO 8601 (1988): Ова међународна норма за представљање датума и времена помогла је да се стандардује аритметика датума у различитим системима и културама.
Ево неких примера кода за извршавање прорачуна датума у различитим програмским језицима:
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 # Додавање година и месеци
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 # Обрада случајева на крају месеца
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 # Додавање недеља и дана
23 new_date += timedelta(weeks=weeks, days=days)
24
25 return new_date.strftime("%Y-%m-%d")
26
27## Пример коришћења
28print(add_time("2023-01-31", months=1)) # Излаз: 2023-02-28
29print(add_time("2023-02-28", years=1)) # Излаз: 2024-02-28
30print(add_time("2023-03-15", weeks=2, days=3)) # Излаз: 2023-04-01
31
1function addTime(dateStr, years = 0, months = 0, weeks = 0, days = 0) {
2 let date = new Date(dateStr);
3
4 // Додавање година и месеци
5 date.setFullYear(date.getFullYear() + years);
6 date.setMonth(date.getMonth() + months);
7
8 // Додавање недеља и дана
9 date.setDate(date.getDate() + (weeks * 7) + days);
10
11 return date.toISOString().split('T')[0];
12}
13
14// Пример коришћења
15console.log(addTime("2023-01-31", 0, 1)); // Излаз: 2023-02-28
16console.log(addTime("2023-02-28", 1)); // Излаз: 2024-02-28
17console.log(addTime("2023-03-15", 0, 0, 2, 3)); // Излаз: 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 // Додавање година, месеци, недеља и дана
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)); // Излаз: 2023-02-28
20 System.out.println(addTime("2023-02-28", 1, 0, 0, 0)); // Излаз: 2024-02-28
21 System.out.println(addTime("2023-03-15", 0, 0, 2, 3)); // Излаз: 2023-04-01
22 }
23}
24
Ови примери демонстрирају како извршити прорачуне датума у Питону, ЈаваСкрипту и Јави, обрађујући различите ивичне ситуације као што су датуми на крају месеца и године прелета.
Додавање 1 месеца 31. јануару 2023:
Додавање 1 године 29. фебруару 2024 (година прелета):
Одузимање 2 недеље и 3 дана од 15. марта 2023:
Додавање 18 месеци 31. јулу 2022:
Ричардс, Е. Г. (2013). Календар. У С. Е. Урбани & П. К. Сеиделман (ур.), Објашњавајући додатак астрономском алманаху (3. издање, стр. 585-624). Милл Валли, Калифорнија: Универзитетска научна књига.
Дершовиц, Н., & Реинголд, Е. М. (2008). Календарске калкулације (3. издање). Кембриџ Универзитетска штампа.
Кун, М., & Џонсон, К. (2013). Применљиво предиктивно моделовање. Шпригер.
"Класе датума и времена". Оракл. https://docs.oracle.com/javase/8/docs/api/java/time/package-summary.html
"datetime — Основне врсте датума и времена". Фондација Питон. https://docs.python.org/3/library/datetime.html
"Датум". Мозила развојна мрежа. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date
Otkrijte više alata koji mogu biti korisni za vaš radni proces