Clojure即时/解析时间戳使用

时间:2014-04-23 07:36:24

标签: rest clojure datomic instant

一个clojure新手问题。我试图弄清楚将客户端(用任何语言编写)的日期传递给用clojure编写的服务器的最佳方法,该服务器依赖于Datomic数据库。为了避免语言特定类的任何问题,我计划将日期作为RFC3339格式的字符串传递。但是,我在Clojure中解析字符串时遇到了问题。我明显错误的假设是我能做到:

(clojure.instant/parse-timestamp "2014")

因此得到一个瞬间。但是,此调用会导致

clojure.lang.ArityException: Wrong number of args (1) passed to: instant$fn--6183$fn …

这让我很困惑,因为据我所知,这个函数只接受一个参数(格式化的字符串)。

我错过了什么?

1 个答案:

答案 0 :(得分:12)

parse-timestamp是两个参数的函数。时间戳的字符串表示形式是第二个。第一个用于传递一个函数,该函数接受一堆参数并构造一个表示瞬间的对象。 new-instant的文档字符串中描述了此parse-timestamp函数的参数 - 有关详细信息,请参阅(doc clojure.instant/parse-timestamp)

通常你不需要直接调用parse-timestamp,因为clojure.instant导出了一堆用于读取时间戳的函数:

(clojure.instant/read-instant-date "2014-04-23T10:13Z")
;= #inst "2014-04-23T10:13:00.000-00:00"

read-instant-calendarread-instant-timestamp是此类型的另外两个功能。它们都是使用parse-timestamp构建的,并且有记录其合同的文档字符串。