Clojure:
Получение текущей даты
Как это сделать:
;; Импортирование Java interop для использования классов Date
(import java.util.Date)
(import java.text.SimpleDateFormat)
;; Получение текущей даты и времени
(defn current-date-time []
(let [today (new Date)]
(println "Текущая дата и время: " today)))
(current-date-time)
;; Вывод: Текущая дата и время: Wed Apr 05 00:12:35 BST 2023
;; Форматирование даты в определенный шаблон
(defn formatted-current-date []
(let [today (new Date)
formatter (SimpleDateFormat. "dd-MM-yyyy")]
(println "Сегодняшняя дата: " (.format formatter today))))
(formatted-current-date)
;; Вывод: Сегодняшняя дата: 05-04-2023
Подробнее
Clojure, современный диалект Lisp, предлагает интероперабельность с Java, поэтому мы часто используем богатый API Java для работы с датой и временем. Исторически, даты обрабатывались совсем по-другому – подумайте о шестеренках и солнечных часах – но в программировании мы имели Date
и Calendar
из Java уже в JDK 1.0. Теперь у нас также есть java.time
из Java 8 для более комплексного и единого подхода к временным данным.
Хотя java.util.Date
хорошо подходит для базовых потребностей, у него есть свои особенности, например, изменяемость – это означает, что он может изменяться после создания, например, с помощью setTime
. java.time
неизменяем и более универсален, но для простых задач, например, получения текущей даты, Date
все еще справляется со своей задачей.
Альтернативы внутри Clojure включают библиотеки, такие как clj-time, которая оборачивает Joda Time (предшественник java.time
), и tick, современная библиотека Clojure для работы со временем. Каждая имеет свои плюсы и минусы в зависимости от объема и сложности ваших потребностей в обработке времени.
С точки зрения реализации, получение текущей даты и времени является довольно простой задачей в Clojure благодаря его корням Java. Обычно это делается одной строкой, хотя форматирование даты требует нескольких дополнительных шагов и понимания шаблонов и стандартов форматирования даты Java.
Смотрите также
Вот несколько интересных уголков интернета для любопытного путешественника во времени Clojure:
- Документация Clojure: https://clojuredocs.org/
- API даты/времени Java 8: https://docs.oracle.com/javase/tutorial/datetime/
- репозиторий clj-time на GitHub: https://github.com/clj-time/clj-time
- репозиторий tick на GitHub: https://github.com/juxt/tick