Java: 我有 joda 开始和结束日期时间,我如何将它分成 N 块?
Java: I have joda Start and End DateTime, how would I slice it into N pieces?
我有一个开始日期和结束日期,因此我有一个持续时间,它可以是几小时的小持续时间,也可以是几年的长持续时间,我怎样才能将它分成相等的持续时间,例如:
以下持续时间约为。 1个月
startDate = 2017-03-01 00:00:00.000Z
endDate = 2017-04-01 00:00:00.000Z
我如何将它分成 2 等份?
如下所示:
startDate1 = 2017-03-01 00:00:00.000Z
endDate1 = 2017-03-15 00:00:00.000Z
startDate2 = 2017-03-15 00:00:00.000Z
endDate2 = 2017-04-01 00:00:00.000Z
假设您正在使用 LocalData
,对两个日期使用函数 'getLocalMillis',然后以您选择的间隔从头到尾循环。
伪代码:
long start = startDate.getLocalMillis();
long end = endDate.getLocalMillis();
long interval = (end-start)/numberOfIntervals;
for(long i = start+interval; i < end; i+=interval){
LocalDate ld = new LocalDate(i);
//do something with ld
}
如果有些人在给定时间之间寻找相等的分母,这里是代码。
private List<Interval> splitDateTime(long start, long end, int intervalNo) {
long interval = (end - start) / intervalNo;
List<Interval> list = new ArrayList<Interval>();
for (long i = start + interval; i < end; i += interval) {
list.add(new Interval(start, i));
start=start + interval;
}
list.add(new Interval(start, end));
return list;
}
我有一个开始日期和结束日期,因此我有一个持续时间,它可以是几小时的小持续时间,也可以是几年的长持续时间,我怎样才能将它分成相等的持续时间,例如:
以下持续时间约为。 1个月
startDate = 2017-03-01 00:00:00.000Z
endDate = 2017-04-01 00:00:00.000Z
我如何将它分成 2 等份? 如下所示:
startDate1 = 2017-03-01 00:00:00.000Z
endDate1 = 2017-03-15 00:00:00.000Z
startDate2 = 2017-03-15 00:00:00.000Z
endDate2 = 2017-04-01 00:00:00.000Z
假设您正在使用 LocalData
,对两个日期使用函数 'getLocalMillis',然后以您选择的间隔从头到尾循环。
伪代码:
long start = startDate.getLocalMillis();
long end = endDate.getLocalMillis();
long interval = (end-start)/numberOfIntervals;
for(long i = start+interval; i < end; i+=interval){
LocalDate ld = new LocalDate(i);
//do something with ld
}
如果有些人在给定时间之间寻找相等的分母,这里是代码。
private List<Interval> splitDateTime(long start, long end, int intervalNo) {
long interval = (end - start) / intervalNo;
List<Interval> list = new ArrayList<Interval>();
for (long i = start + interval; i < end; i += interval) {
list.add(new Interval(start, i));
start=start + interval;
}
list.add(new Interval(start, end));
return list;
}