Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Clojure中获取Unix时间戳?_Clojure_Timestamp_Unix Timestamp - Fatal编程技术网

如何在Clojure中获取Unix时间戳?

如何在Clojure中获取Unix时间戳?,clojure,timestamp,unix-timestamp,Clojure,Timestamp,Unix Timestamp,我想知道当前的时间戳是什么。到目前为止,我所能做的最好的事情就是定义我自己的函数: (int (/ (.getTime (java.util.Date.)) 1000)) 是否有一个标准函数可以使用clojure获取Unix时间戳?几乎所有基于JVM的时间戳机制都以从纪元开始的毫秒为单位测量时间-因此,没有任何标准**会给出从纪元开始的秒数 您的功能可以稍微简化为: (quot (System/currentTimeMillis) 1000) **可能有类似的功能,但引入第三方库似乎有些过分

我想知道当前的时间戳是什么。到目前为止,我所能做的最好的事情就是定义我自己的函数:

(int (/ (.getTime (java.util.Date.)) 1000))

是否有一个标准函数可以使用clojure获取Unix时间戳?

几乎所有基于JVM的时间戳机制都以从纪元开始的毫秒为单位测量时间-因此,没有任何标准**会给出从纪元开始的秒数

您的功能可以稍微简化为:

(quot (System/currentTimeMillis) 1000)
**可能有类似的功能,但引入第三方库似乎有些过分。

我会选择标准的Clojure库,用于处理时间和日期(包装)。是的,对于一个简单的需求来说,它是一个额外的依赖项,如果您真的只想要当前的时间戳,那么它可能会有点过分;即使这样,它也只是一种几乎不需要花费的方便。如果您最终需要额外的与时间相关的功能,那么它将提供所有基本功能的出色实现

对于代码,以下是当前版本的Leiningen依赖项说明符:

[clj-time "0.5.1"]
下面是获取当前时间戳的一个片段:

(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.))

不要使用
int
(int(/(.getTimeInMillis(java.util.GregorianCalendar.20381 20))1000));=>IllegalArgumentException值超出int:2150258400的范围。请尝试
quot
,例如
(>(java.util.Date.).getTime(quot 1000))
。谢谢,数学清理将
(System/currentTimeMillis)
放在一边。谢谢,如果您正在进行重要的时间计算,这绝对是一个很好的解决方案。这将返回一个比率,而您可能需要一个整数。见亚历克斯的回答。
(defn unix-time-real
  "Taken from
  System/currentTimeMillis."
  []
  (/ (System/currentTimeMillis) 1000))