在Clojurescript中为日期添加秒数

时间:2015-11-11 15:36:51

标签: javascript date clojure clojurescript

我想在Clojurescript中为日期添加秒数。在Javascript中:

var t = new Date();
t.setSeconds(t.getSeconds() + 10);

如果可能的话,不需要图书馆(例如cljs-time),原因很简单,这是我认为我需要约会的唯一参与。

我想知道Javascript日期是否可以从毫秒构建?

2 个答案:

答案 0 :(得分:2)

以下功能可以以两种不同的方式使用:

(defn add-seconds
  ([s] (add-seconds (js/Date.) s))
  ([d s] (js/Date. (+ (.getTime d) (* 1000 s)))))

使用1参数调用它将返回一个新日期,以“ now ”的秒数计算:

(add-seconds 20)
;; #inst "2015-11-12T00:03:51.712-00:00" 
;; This is a Date object set 20 seconds from the time add-seconds was called

使用2个参数调用它允许以秒为单位指定开始日期和该日期的偏移量:

(def the-epoch (js/Date. 0))
;; This gives us a Date to use

(add-seconds the-epoch 120)
;; #inst "1970-01-01T00:02:00.000-00:00"

答案 1 :(得分:0)

(defn add-seconds [js-time seconds]
  (let [given-millis (.getMilliseconds js-time)
        augmented-millis (+ (* seconds 1000) given-millis)
        res (js/Date. augmented-millis)]
    res))

(def now (js/Date.))
(def plus-20 (add-seconds now 20))
(log "Now is " now)
(log "20 secs time is " plus-20)

如果用.getTime

替换.getMilliseconds,则此解决方案有效