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

How to use DateTime Object split Interval Object

我有一个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]
]

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

假设您的一般情况是:

  • 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 数组将创建所有间隔。