首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >迭代Joda时间间隔

迭代Joda时间间隔
EN

Stack Overflow用户
提问于 2012-08-20 05:53:43
回答 4查看 6.2K关注 0票数 8

是否可以迭代间隔的开始日期和结束日期之间的时间,一次一天?使用Clojure的clj-time库也很好!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-08-20 06:01:43

是啊。

如下所示:

代码语言:javascript
复制
DateTime now = DateTime.now();
DateTime start = now;
DateTime stop = now.plusDays(10);
DateTime inter = start;
// Loop through each day in the span
while (inter.compareTo(stop) < 0) {
    System.out.println(inter);
    // Go to next
    inter = inter.plusDays(1);
}

此外,下面是Clojure的clj-time的实现:

代码语言:javascript
复制
(defn date-interval
  ([start end] (date-interval start end []))
  ([start end interval]
   (if (time/after? start end)
     interval
     (recur (time/plus start (time/days 1)) end (concat interval [start])))))
票数 14
EN

Stack Overflow用户

发布于 2012-08-20 08:12:28

这应该是可行的。

代码语言:javascript
复制
(take-while (fn [t] (cljt/before? t to)) (iterate (fn [t] (cljt/plus t period)) from))
票数 8
EN

Stack Overflow用户

发布于 2012-08-20 06:15:50

使用clj-time,- Interval是Joda间隔:

代码语言:javascript
复制
(use '[clj-time.core :only (days plus start in-days)])
(defn each-day [the-interval f]
 (let [days-diff (in-days the-interval)]
    (for [x (range 0 (inc days-diff))] (f (plus (start the-interval) (days x))))))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12030322

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档