2014-11-25 185 views
8

我是clojure的新手,任何人都可以帮助我理解如何在clojure中获取当前日期,然后为其添加日期?例如对于例如 在当前日期添加3天?将日期添加到当前日期

回答

7

惯用的Clojure方法是使用clj-time(见链接Leiningen/Maven的安装说明),其包装由第一次的答案从overthink引用乔达时间。

user=> (use '[clj-time.core]) 
nil 
user=> (now) 
#<DateTime 2014-11-25T12:03:34.714Z> 
user=> (plus (now) (days 3)) 
#<DateTime 2014-11-28T12:05:40.888Z> 
4

这不是一个Clojure特定的答案,真的,但我会用Joda time

(import 'org.joda.time.DateTime) 
(let [now (DateTime/now) 
     later (.plusDays now 3)] 
    [now later]) 

;; [#<DateTime 2014-11-24T23:26:05.885-05:00> #<DateTime 2014-11-27T23:26:05.885-05:00>] 
+0

你可以通过指向乔达时间周围的'clj-time'包装来使它成为Clojure特有的。 :) – xsc 2014-11-25 11:12:33

+0

@xsc不够公平。看起来像别人提供了这样的答案。 – overthink 2014-11-25 15:09:44

+0

这个答案/确实/需要一个downvote吗?请问downvoter能解释一下吗? – overthink 2014-11-25 15:10:45

1
user> (import '[java.util Calendar]) 
;=> java.util.Calendar 
user> (defn days-later [n] 
     (let [today (Calendar/getInstance)] 
      (doto today 
      (.add Calendar/DATE n) 
      .toString))) 
#'user/days-later 
user> (println "Tomorrow: " (days-later 1)) 
;=> Tomorrow: #inst "2014-11-26T15:36:31.901+09:00" 
;=> nil 
user> (println "7 Days from now: " (days-later 7)) 
;=> 7 Days from now: #inst "2014-12-02T15:36:44.785+09:00" 
;=> nil