2016-02-28 75 views
1

假设我有两个时间范围(2014-01-25 10:23:14 - > 2016-09-05 11:43: 55)。如何在两个时间范围内使用Joda时间在Java中获取时间范围

我想从上面的时间单位,如下所示的时间范围。

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-time获得以上种类的范围?

谢谢先进。

+3

这是不完全清楚你如何定义每个范围。例如,第二天的_Day Range_ stat会在一周后结束吗?为什么'月份范围'实际上覆盖了7个月?等等...如果有一个模式,请启发我们。 –

+1

对不起,我不够清楚。我们正在根据他们的时间单位存储一些统计信息。作为例子,我们以每秒为基础存储总价值,基于每分钟,每小时为基础等,以获得更好的性能。所以如果我想要一些东西的总价值,那么我不需要对需要相当长时间的原始数据进行计算。相反,我可以查看上述表格和客户端,我可以做更快的最终计算。 –

回答

1

您可以使用此:

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 

编号:https://kodejava.org/how-do-i-use-the-interval-class-of-joda-time/

相关问题