Java:我有joda Start和End DateTime,我怎么把它切成N块?

时间:2017-04-19 07:01:52

标签: java jodatime

我有一个开始日期和结束日期,因此我有一个持续时间,它可能是一个小的持续时间,或几年可能是一个很长的持续时间,我怎么能把它切成相等的持续时间,为例如:

低于持续时间约为。 1个月

startDate = 2017-03-01 00:00:00.000Z
endDate = 2017-04-01 00:00:00.000Z

我如何将它分成两等份? 如下所示:

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

2 个答案:

答案 0 :(得分:1)

假设您正在使用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
}

答案 1 :(得分:0)

如果有些人在给定时间之间看起来是平等的,这就是代码。

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;
    }