Как лучше всего узнать дату и время в Clojure? - PullRequest
32 голосов
/ 08 января 2011

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

Ответы [ 5 ]

47 голосов
/ 08 января 2011

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

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

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

21 голосов
/ 16 марта 2016

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

Вот как вы можете получить текущийдата и время:

(java.time.LocalDateTime/now)
16 голосов
/ 08 января 2011
9 голосов
/ 31 марта 2013

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

(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) является то, что новые выпуски поддерживают новые изменения часовых поясов.

6 голосов
/ 26 декабря 2015

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

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

...