Clojure中的Unix时间戳

时间:2013-09-17 16:36:20

标签: unix datetime clojure timestamp

我需要将两个unix时间戳传递给一个查询,以便在两个日期之间撤回数据。

如果脚本今天运行,9月17日需要获取前一天的数据,则unix时间戳将需要是17日16:00到00:00:00的00:00:00。

这些时间戳需要自动存储在变量dateFrom和dateTo中,以便将它们传递给查询。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

您可以使用clj-time

(require '(clj-time [core :as time] [coerce :as tc]))

;; not timezone-aware
(time/today)
;= #<LocalDate 2013-09-17>

;; UTC
(time/today-at-midnight)
;= #<DateMidnight 2013-09-17T00:00:00.000Z>

;; timestamp at midnight
(tc/to-long (time/today))
;= 1379376000000

(tc/minus (time/today-at-midnight) (time/days 1))
;= #<DateMidnight 2013-09-16T00:00:00.000Z>

等等。

如果您需要转换为java.sql.Timestamp而不是long,那么clj-time.coerce/to-sql-timejava.sql.Timestamp使用#inst文字进行打印在Clojure 1.5.1):

(tc/to-sql-time (time/today))
;= #inst "2013-09-17T00:00:00.000000000-00:00"