Kalkulator za dodavanje i oduzimanje vremena od datuma
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.
Kalkulator kalendara
Dokumentacija
Календарски калкулатор
Увод
Календарски калкулатор је свестрани алат дизајниран за извршавање операција аритметике датума. Омогућава корисницима да додају или одузимају временске јединице (године, месеце, недеље и дане) од датог датума. Овај калкулатор је посебно користан за планирање пројеката, распоред и разне прорачуне засноване на времену.
Формула
Календарски калкулатор користи следећи алгоритам за прорачуне датума:
-
За додавање/одузимање година:
- Додајте/одузмите одређени број година од компонента године датума.
- Ако је резултујући датум 29. фебруар и нова година није година преступна, прилагодите на 28. фебруар.
-
За додавање/одузимање месеци:
- Додајте/одузмите одређени број месеци од компонента месеца датума.
- Ако је резултујући месец већи од 12, увећајте годину и прилагодите месец у складу с тим.
- Ако је резултујући месец мањи од 1, смањите годину и прилагодите месец у складу с тим.
- Ако резултујући датум не постоји (нпр. 31. април), прилагодите на последњи дан месеца.
-
За додавање/одузимање недеља:
- Претворите недеље у дане (1 недеља = 7 дана) и наставите с прорачуном дана.
-
За додавање/одузимање дана:
- Користите основну библиотеку датума за извршавање аритметике дана, која аутоматски обрађује:
- Године прелета
- Прелазе месеца
- Прелазе године
- Користите основну библиотеку датума за извршавање аритметике дана, која аутоматски обрађује:
Ивичне ситуације и разматрања
-
Године прелета: Када додајете/одузимате године, посебна пажња се посвећује 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:
- Улаз: 2023-01-31, Додај 1 месец
- Излаз: 2023-02-28 (28. фебруар 2023)
-
Додавање 1 године 29. фебруару 2024 (година прелета):
- Улаз: 2024-02-29, Додај 1 годину
- Излаз: 2025-02-28 (28. фебруар 2025)
-
Одузимање 2 недеље и 3 дана од 15. марта 2023:
- Улаз: 2023-03-15, Одузми 2 недеље и 3 дана
- Излаз: 2023-02-26 (26. фебруар 2023)
-
Додавање 18 месеци 31. јулу 2022:
- Улаз: 2022-07-31, Додај 18 месеци
- Излаз: 2024-01-31 (31. јануар 2024)
Референце
-
Ричардс, Е. Г. (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
Povratne informacije
Kliknite na povratnu informaciju tosta da biste počeli davati povratne informacije o ovom alatu
Povezani alati
Otkrijte više alata koji mogu biti korisni za vaš radni proces