在Clojure中获取日期和时间的最佳方式是什么?

时间:2011-01-08 19:23:50

标签: java datetime clojure

我需要在Clojure Client-Server场景中记录一些事件,但在我看来,Clojure不提供日期/时间功能。任何人都可以证实这一点,或者我在这里遗漏了什么?!如果我是正确的,那么我需要使用java interop,对吗?

5 个答案:

答案 0 :(得分:46)

如果只需要获取记录器的当前时间和日期,那么此功能就可以了:

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

现在你提到了这一点,支持不可变的Date对象会很有用。

答案 1 :(得分:21)

Java 1.8将java.time软件包添加到核心JDK中,以清除许多具有日期和状态的frustrations。在Java的时间。由于java.time现在是核心Java的一个广泛可用的部分,具有大大改进的API,我建议您在编写新的日期和时间时首先考虑它。时间码。

以下是检索当前日期和时间的方法:

(java.time.LocalDateTime/now)

答案 2 :(得分:16)

有一个Clojure-wrapper library for Joda-Time。或者你必须使用标准Java API的java interop。

答案 3 :(得分:9)

使用包含Java Joda Time库的Clojure库clj-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)的一个好处是新版本支持对时区进行新的更改。

答案 4 :(得分:6)

如果你不需要更高级的东西,只需使用Java类。

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