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

Java 在Clojure中获取日期和时间的最佳方式是什么?,java,datetime,clojure,Java,Datetime,Clojure,我需要在Clojure客户机-服务器场景中记录一些事件,但在我看来,Clojure不提供日期/时间函数。有人能证实这一点吗,否则我会错过什么?!如果我是正确的,那么我需要使用java互操作,对吗?有一个问题。或者,您必须将java interop与标准java API一起使用。如果您只需要获取记录器的当前时间和日期,则此函数可以: (defn now [] (new java.util.Date)) 既然您已经提到了这一点,那么支持不可变的日期对象将非常有用。使用包装Java Joda时间库

我需要在Clojure客户机-服务器场景中记录一些事件,但在我看来,Clojure不提供日期/时间函数。有人能证实这一点吗,否则我会错过什么?!如果我是正确的,那么我需要使用java互操作,对吗?

有一个问题。或者,您必须将java interop与标准java API一起使用。

如果您只需要获取记录器的当前时间和日期,则此函数可以:

 (defn now [] (new java.util.Date))
既然您已经提到了这一点,那么支持不可变的日期对象将非常有用。

使用包装Java Joda时间库的Clojure库,您可以使用如下代码:

(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"
(需要“[clj-time.core:as-time]”)
(需要“[clj-time.format:作为时间格式])
(时间/现在)=>#
(定义时间格式化程序(时间格式/格式化程序:基本日期时间));;ISO 8601 UTC格式
(时间格式/解压自定义格式设置程序(日期时间2010 10 3))=>“20101003T000000.000Z”

Joda Time(以及clj Time)的一个好处是,新版本支持时区的新更改。

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

(.format(java.text.SimpleDateFormat.MM/dd/yyyy)(新的java.util.Date))
java 1.8将包添加到核心JDK中,以清理许多带有java中日期和时间状态的文件。由于java.time现在是CoreJava的一个广泛可用的部分,它的API有了很大的改进,因此我鼓励您在编写新的日期和时间代码时首先查看它

以下是如何检索当前日期和时间:

(java.time.LocalDateTime/now)

谢谢,但我宁愿把我的依赖尽可能低。@ Ali -一个健全的日期时间图书馆是一个你应该认真考虑的依赖;不幸的是,标准库(对于许多语言)并不总是足够精确。很好,我想我应该使用(print(.getTime(now)),以在日志文件中保持合理的精度。谢谢。
(defn now[](java.util.Date.))
是标准版本。=>(.toString(java.time.LocalDateTime/now));=>“2021-03-23T16:23:14.679916”这是我觉得有用的东西