Подтвердить что ты не робот

Каков наилучший способ получить дату и время в Clojure?

Мне нужно зарегистрировать некоторые события в сценарии Clojure Client-Server, но мне кажется, что Clojure не предоставляет функцию даты/времени. Может ли кто-нибудь подтвердить это или я что-то упустил?! Если я прав, мне нужно использовать java interop, правильно?

4b9b3361

Ответ 1

Если вам нужно только получить текущее время и дату для вашего регистратора, то эта функция в порядке:

 (defn now [] (new java.util.Date))

Теперь, когда вы упомянули об этом, было бы полезно иметь поддержку неизменяемых объектов Date.

Ответ 2

Существует библиотека Clojure -wrapper для Joda-Time. Или вам придется использовать java-взаимодействие со стандартным API Java.

Ответ 3

Java 1.8 добавила пакет java.time в основной JDK для очистки многих разочарований с состоянием даты и времени на Java. Поскольку java.time теперь является широко доступной частью базовой Java с улучшенным API, я бы посоветовал вам придать ему первый взгляд при написании нового кода даты и времени.

Пример:

(java.time.LocalDateTime/now)

Ответ 4

С clj-time, библиотекой Clojure, которая обертывает библиотеку времени Java Joda, вы можете использовать следующий код:

(require '[clj-time.core :as time])
(require '[clj-time.format :as time-format])

(time/now) => #<DateTime 2013-03-31T03:23:47.328Z>

(def time-formatter (time-format/formatters :basic-date-time))  ;; ISO 8601 UTC format
(time-format/unparse custom-formatter (date-time 2010 10 3)) => "20101003T000000.000Z"

Одно из преимуществ Joda Time (и, следовательно, clj-time) заключается в том, что новые версии поддерживают новые изменения в часовых поясах.

Ответ 5

Если вам не нужно ничего более продвинутого, просто используйте классы Java.

(.format (java.text.SimpleDateFormat. "MM/dd/yyyy") (new java.util.Date))