2014-11-25 30 views
8

Sono nuovo di clojure, qualcuno può aiutarmi a capire come posso ottenere la data corrente in clojure e quindi aggiungere giorni ad essa? per es. aggiungendo 3 giorni alla data corrente?Aggiungi giorni alla data corrente

risposta

7

Il modo Clojure idiomatica è quello di utilizzare clj-time (vedi link per Leiningen/Maven istruzioni di installazione), che avvolge il tempo Joda come riferimento la prima risposta da 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

Questa non è una risposta specifica per Clojure, davvero, ma vorrei usare 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

È possibile renderlo specifico per Clojure indicando il wrapper 'clj-time' attorno all'ora di Joda. :) – xsc

+0

@xsc Abbastanza giusto. Sembra che qualcun altro abbia fornito una risposta del genere. – overthink

+0

Questa risposta/davvero/richiede un downvote? Potrebbe il downvoter spiegare per favore? – overthink

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 
Problemi correlati