2014-11-24 3 views
3

clojure에서 나는 현재 날짜에 일을 추가하고 싶습니다. 누구든지 저를 안내 할 수 있습니다. 현재 날짜를 아래에 표시하고 7 일을 더하고 싶다고 말하면 어떻게 새 날짜를 얻을 수 있습니까?clojure에서 현재 날짜에 일을 추가하는 방법

(.format (java.text.SimpleDateFormat. "MM/dd/yyyy") (java.util.Date.)) 

답변

6

이 작동합니다 :

(java.util.Date. (+ (* 7 86400 1000) (.getTime (java.util.Date.))) 

내가 현재 시간 System/currentTimeMillis을 사용하는 것을 선호 :

(java.util.Date. (+ (* 7 86400 1000) (System/currentTimeMillis)))

아니면 처리 할 수있는 더 좋은 API 인 clj-time을 사용할 수 있습니다 시간 (Joda 시간을 감싸는 래퍼). readme 파일에서 :

(t/plus (t/date-time 1986 10 14) (t/months 1) (t/weeks 3))

=> #<DateTime 1986-12-05T00:00:00.000Z>

+0

이것은 잘못입니다! 하루에 항상 86400 초가 있다고 가정하지 마십시오. DST의 경계를 넘으면 여분의 시간을 얻거나 추가 시간을 잃게됩니다. – redfish64

+0

예 : .format (java.text.SimpleDateFormat. "yyyy/MM/dd HH : mm z") (java.util.Date. (+ (* 7 86400 1000) .getTime (.parse (java.text "yuyy/MM/dd HH : mm z") "2015/03/05 00:00 PDT"))))))는 "2015/03/11 23:00 GMT-08 : 00" 2015/03/12 00:00 GMT -0 : 8 : 00 "으로 변경됩니다. – redfish64

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 
관련 문제