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-інтерфейс. При обчисленні дат важливо враховувати часові зони та літній час, щоб уникнути помилок у розрахунках.
Див. також:
- Більше про бібліотеку clj-time: https://github.com/clj-time/clj-time
- Посібник з Joda-Time: http://www.joda.org/joda-time/quickstart.html