Обчислення дати у майбутньому або минулому

Clojure:
Обчислення дати у майбутньому або минулому

Як це зробити:

Clojure включає бібліотеку clj-time, яку можна використовувати для маніпуляцій із датами. Для прикладу додамо 5 днів до поточної дати:

(require '[clj-time.core :as t])
(require '[clj-time.coerce :as c])

;; Створення поточної дати
(def today (t/now))

;; Додавання 5 днів до поточної дати
(def future-date (t/plus today (t/days 5)))

;; Виведення в форматі yyyy-MM-dd
(println (c/to-string future-date))

А тепер віднімемо 10 днів від конкретної дати:

;; Визначення конкретної дати
(def some-date (t/date-time 2023 4 1))

;; Віднімання 10 днів від визначеної дати
(def past-date (t/minus some-date (t/days 10)))

;; Виведення в форматі yyyy-MM-dd
(println (c/to-string past-date))

Поглиблено:

У минулому програмісти використовували стандартні Java бібліотеки для роботи з датами. Втім, clj-time, бібліотека заснована на Joda-Time, зробила маніпуляцію з датами в Clojure легшою та інтуітивно зрозумілою. Іншим вибором є новіший Java Time API (JSR-310), який також доступний у Clojure через Java інтероперабельність, але clj-time часто вибирають за зручний Clojure-інтерфейс. При обчисленні дат важливо враховувати часові зони та літній час, щоб уникнути помилок у розрахунках.

Див. також: