如何使用Joda time从Java中的两个时间范围中获取每个单元的时间范围

如何使用Joda time从Java中的两个时间范围中获取每个单元的时间范围,java,jodatime,Java,Jodatime,假设我有两个时间范围(2014-01-25 10:23:14->2016-09-05 11:43:55) 我想从上面得到时间范围,时间单位如下 2014-01-25 10:23:14 - 2014-01-25 10:24:00 = second range 2014-01-25 10:24:00 - 2014-01-25 11:00:00 = minute range 2014-01-25 11:00:00 - 2014-01-26 00:00:00 = hour range 2014-01-2

假设我有两个时间范围(2014-01-25 10:23:14->2016-09-05 11:43:55)

我想从上面得到时间范围,时间单位如下

2014-01-25 10:23:14 - 2014-01-25 10:24:00 = second range
2014-01-25 10:24:00 - 2014-01-25 11:00:00 = minute range
2014-01-25 11:00:00 - 2014-01-26 00:00:00 = hour range
2014-01-26 00:00:00 - 2014-02-01 00:00:00 = day range
2014-02-01 00:00:00 - 2016-09-01 00:00:00 = month range
2016-09-01 00:00:00 - 2016-09-05 00:00:00 = day range
2016-09-05 00:00:00 - 2016-09-05 11:00:00 = hour range
2016-09-05 11:00:00 - 2016-09-05 11:43:00 = minute range
2016-09-05 11:43:00 - 2016-09-05 11:43:55 = second range
是否可以使用joda时间获得上述范围

高级版谢谢。

您可以使用:

 package org.kodejava.example.joda;
 import org.joda.time.DateTime;
import org.joda.time.Duration;
import org.joda.time.Interval;
import org.joda.time.Months;

public class IntervalDemo {
public static void main(String[] args) {
    DateTime startDate = new DateTime();
    DateTime endDate = startDate.plus(Months.months(2));

    //
    // Creates an interval from a start to an end instant.
    //
    Interval interval = new Interval(startDate, endDate);
    System.out.println("Interval = " + interval);
    System.out.println("Start    = " + interval.getStart());
    System.out.println("End      = " + interval.getEnd());

    //
    // Add one more month to the interval
    //
    interval = interval.withEnd(interval.getEnd().plusMonths(1));
    System.out.println("Interval = " + interval);

    //
    // Gets the duration of this time interval
    //
    Duration duration = interval.toDuration();
    System.out.println("Duration = " + duration);
    }
}
结果如下:

Interval = 2012-02-28T17:53:36.997/2012-04-28T17:53:36.997
Start    = 2012-02-28T17:53:36.997+08:00
End      = 2012-04-28T17:53:36.997+08:00
Interval = 2012-02-28T17:53:36.997/2012-05-28T17:53:36.997
Duration = PT7776000S

Ref:

您完全不清楚如何定义每个范围。例如,哪一天范围在第二天统计,一周后结束?为什么
月份范围实际上涵盖7个月?等如果有模式,请告诉我们。对不起,我不够清楚。我们根据时间单位存储一些统计信息。例如,为了获得更好的性能,我们以每秒、每分钟、每小时等为单位存储总值。因此,如果我想要某个东西的总价值,那么我不需要对原始数据进行计算,这需要花费相当长的时间。相反,我可以查看上面提到的表格,从客户端,我可以更快地进行最终计算。