【发布时间】:2011-02-17 04:09:18
【问题描述】:
我在http://clojure.org/libraries 中找不到处理时间和日期的库。有没有,或者这是我必须弄清楚如何直接用Java做的事情?
【问题讨论】:
标签: clojure
我在http://clojure.org/libraries 中找不到处理时间和日期的库。有没有,或者这是我必须弄清楚如何直接用Java做的事情?
【问题讨论】:
标签: clojure
clj-time 是 Java Joda-Time 的包装器。
如果您使用 Leiningen 或 Maven,您可以通过 Clojars 将其添加到您的项目中。
GitHub page 上有很多示例,展示了如何进行日期算术和解析/格式化。例如:
(in-minutes (duration (date-time 1986 10 2) (date-time 1986 10 14)))
;; gives 17280
(def custom-formatter (formatter \"yyyyMMdd\"))
(parse custom-formatter "20100311")
;; gives #<DateTime 2010-03-11T00:00:00.000Z>
(unparse custom-formatter (date-time 2010 10 3))
;; gives "20101003"
【讨论】:
duration 好像改名为interval
clj-time 的使用。
这是一个老问题,但 Java 8 中的新 LocalDate 类是完成此任务的不需要库的方法。
(ns example
(:import (java.time LocalDate format.DateTimeFormatter)))
(def formatting (DateTimeFormatter/ofPattern
"MM/dd/yyyy"))
(LocalDate/parse "08/06/2015" formatting)
【讨论】:
我以前用过clj-time,它包Joda Time没有任何问题。
还有dm3/clojure.java-time,它封装了Java 8 Date-Time API。
从 Clojure 1.8 开始还有一个相关的命名空间:clojure.instant。
【讨论】: