如何使用DateTime对象拆分Interval对象

时间:2017-06-27 12:09:16

标签: java jodatime

我有一个Interval对象:

Interval firstInterval = 
new Interval(new DateTime(2017,06,26,07,55,30),new DateTime(2017,06,26,22,55,30));

DateTime nightToDay = new DateTime(2017, 06, 26, 8, 0, 0);
DateTime dayToNight = new DateTime(2017, 06, 26, 22, 0, 0);

我想获得Interval[]

[
 [2017-06-26 07:55:30 ~ 2017-06-26 08:00:00],
 [2017-06-26 08:00:00 ~ 2017-06-26 22:00:00],
 [2017-06-26 22:00:00 ~ 2017-06-26 22:55:30]
]

当然,这些参数并不固定,只是一个例子。

1 个答案:

答案 0 :(得分:0)

假设您的一般情况是:

  • 的第一个时间间隔为startend
  • 收到nightToDaydayToNight日期
  • 输出必须包含3个间隔:
    1. startnightToDay
    2. nightToDaydayToNight
    3. dayToNightend

对于上述每种情况,您还需要检查间隔的开始是否在结束之前。

如果这就是你需要的,那就去做:

List<Interval> list = new ArrayList<Interval>();
if (firstInterval.getStart().isBefore(nightToDay)) {
    list.add(new Interval(firstInterval.getStart(), nightToDay));
}
if (nightToDay.isBefore(dayToNight)) {
    list.add(new Interval(nightToDay, dayToNight));
}
if (dayToNight.isBefore(firstInterval.getEnd())) {
    list.add(new Interval(dayToNight, firstInterval.getEnd()));
}

list将包含您需要的所有Interval个对象。 如果您需要一个数组,那么转换列表很容易:

Interval[] intervals = new Interval[list.size()];
intervals = list.toArray(intervals);

intervals数组将创建所有间隔。