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