6

一个clojure新手问题。我试图找出将日期从客户端(以任何语言编写)传递到以 clojure 编写的基于 Datomic 数据库的服务器的最佳方法。为了避免语言特定类的任何问题,我计划将日期作为 RFC3339 格式的字符串传递。但是,我无法在 Clojure 中解析字符串。我显然错误的假设是我可以做到:

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

从而获得瞬间。但是,此调用导致

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

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

我错过了什么?

4

1 回答 1

13

parse-timestamp是两个参数的函数。时间戳的字符串表示是第二个。第一个是传入一个函数,该函数接受一堆参数并构造一个表示瞬间的对象。该函数的参数在new-instant--see for details 的文档字符串中描述。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-calendar并且read-instant-timestamp是这种类型的另外两个函数。他们都是使用parse-timestamp并有文档字符串来记录他们的合同。

于 2014-04-23T08:15:24.340 回答