Clojure即时/解析时间戳使用

Lit*_*ate 6 rest clojure instant datomic

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

(clojure.instant/parse-timestamp "2014")
Run Code Online (Sandbox Code Playgroud)

从而得到一个瞬间.但是,此调用会导致

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

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

我错过了什么?

Mic*_*zyk 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"
Run Code Online (Sandbox Code Playgroud)

read-instant-calendar并且read-instant-timestamp是这种类型的另外两个功能.他们都是使用parse-timestamp并且有文档字符串记录他们的合同.