2016-02-28 69 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/

相關問題