如何使用 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]
]
当然,这些参数不是固定的,只是一个例子。
假设您的一般情况是:
- 与
start
和end
有第一个间隔
- 收到
nightToDay
和 dayToNight
日期
- 输出必须包含 3 个间隔:
start
到 nightToDay
nightToDay
到 dayToNight
dayToNight
到 end
并且对于上述每种情况,您还需要检查间隔的开始是否在结束之前。
如果那是你需要的,就这样做:
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
数组将创建所有间隔。
我有一个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]
]
当然,这些参数不是固定的,只是一个例子。
假设您的一般情况是:
- 与
start
和end
有第一个间隔 - 收到
nightToDay
和dayToNight
日期 - 输出必须包含 3 个间隔:
start
到nightToDay
nightToDay
到dayToNight
dayToNight
到end
并且对于上述每种情况,您还需要检查间隔的开始是否在结束之前。
如果那是你需要的,就这样做:
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
数组将创建所有间隔。