我想知道当前时间戳是什么。到目前为止,我能做的最好的事情就是定义我自己的函数来执行此操作:
(int (/ (.getTime (java.util.Date.)) 1000))
是否有使用 clojure 获取 Unix 时间戳的标准函数?
我想知道当前时间戳是什么。到目前为止,我能做的最好的事情就是定义我自己的函数来执行此操作:
(int (/ (.getTime (java.util.Date.)) 1000))
是否有使用 clojure 获取 Unix 时间戳的标准函数?
几乎所有基于 JVM 的时间戳机制都将时间测量为自纪元以来的毫秒数 - 所以不,没有任何标准**可以给出自纪元以来的秒数。
您的功能可以稍微简化为:
(quot (System/currentTimeMillis) 1000)
** Joda可能有类似的东西,但为此引入第三方库似乎有点过头了。
我会选择clj-time,这是用于处理时间和日期的标准 Clojure 库(包装Joda-Time)。是的,对于一个简单的需求,它是一个额外的依赖,如果你真的只想要当前的时间戳,可能会有点过分;即使这样,它也只是一个很好的便利,几乎没有成本。如果您最终确实需要额外的与时间相关的功能,那么它会很好地实现所有基础知识。
至于代码,这里是当前版本的 Leiningen 依赖说明符:
[clj-time "0.15.2"]
这是获取当前时间戳的片段:
(require '[clj-time.core :as time]
'[clj-time.coerce :as tc])
;; milliseconds since Unix epoch
(tc/to-long (time/now))
;; also works, as it would with other JVM date and time classes
(tc/to-long (java.util.Date.))
(defn unix-time-real
"Taken from
System/currentTimeMillis."
[]
(/ (System/currentTimeMillis) 1000))