2014-11-25 183 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