我需要读取yyyyMMdd格式的日期字符串并将其增加x天数 - 在我通过转换为millis并在工厂中添加1天然后转换回yyyyMMdd的那一刻。
(.print
(.withZone
(DateTimeFormat/forPattern "yyyymmdd") (DateTimeZone/forID "EST"))
(+ 86400000 (.parseMillis
(.withZone (DateTimeFormat/forPattern "yyyymmdd")
(DateTimeZone/forID "EST")) "20150401")))
有更清洁的方法吗? clj-time库不适用于我,我正在使用clojure 1.2
答案 0 :(得分:1)
由于您无法使用clj-time
,这是这种情况下的最佳选择,因此我无法想到比使用org.joda.time
更好的事情。
但是,我建议稍微重写一下代码:
DateTimeFormat
对象并重复使用它。以下是您的功能的外观:
(defn add [date pattern days]
(let [fmt (DateTimeFormat/forPattern pattern)
add (* 86400000 days)]
(->> date
(.parseMillis fmt)
(+ add)
(.print fmt))))
(add "20150401" "yyyymmdd" 1) ; => "20150402"
如果您不想使用毫秒,则可以使用.parseDateTime
代替.parseMillis
,.plusDays
方法会为解析日期添加天数:
(defn add [date pattern days]
(let [fmt (DateTimeFormat/forPattern pattern)
dt (.parseDateTime fmt date)]
(.print fmt (.plusDays dt days))))