Как добавить дни к текущей дате в clojure

В ближайшем будущем я хочу добавить дни к текущей дате, может кто-нибудь, пожалуйста, помогите мне в этом. Получаю текущую дату, как показано ниже, и теперь, скажем, я хочу добавить к ней 7 дней, как я могу получить новую дату?

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

2 ответа

Это будет работать:

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

Я предпочитаю использовать System/currentTimeMillis на текущее время:

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

Или вы можете использовать clj-time который является лучшим API для работы со временем (это обертка вокруг Joda Time). Из файла readme:

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

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

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
Другие вопросы по тегам