このコードがあなたが探しているものであるかどうかはわかりませんが、それはあなたを正しい軌道に乗せるかもしれません。
Joda-Time期間は1か月や2週間のような期間を表すため、開始日と終了日を表す2つのDateTimeがあると仮定しました。たとえば、2つの瞬間の間の時間のスライスを表す間隔など、特定の開始または終了はありません。
import java.util.*;
import org.joda.time.*;
class Test {
public static void main(String... args) {
DateTime now = new DateTime();
List<Interval> list = splitDuration(now, now.plusSeconds(10), 3, 3 * 1000);
for(Interval i : list) {
System.out.println(i.getStart() + " - " +
i.getEnd() + " - " +
i.toDurationMillis());
}
}
static List<Interval> splitDuration(DateTime start, DateTime end, long chunkAmount, long chunkSize) {
long millis = start.getMillis();
List<Interval> list = new ArrayList<Interval>();
for(int i = 0; i < chunkAmount; ++i) {
list.add(new Interval(millis, millis += chunkSize));
}
list.add(new Interval(millis, end.getMillis()));
return list;
}
}
私の場合の出力:
2013-03-12T12:29:01.781+01:00 - 2013-03-12T12:29:04.781+01:00 - 3000
2013-03-12T12:29:04.781+01:00 - 2013-03-12T12:29:07.781+01:00 - 3000
2013-03-12T12:29:07.781+01:00 - 2013-03-12T12:29:10.781+01:00 - 3000
2013-03-12T12:29:10.781+01:00 - 2013-03-12T12:29:11.781+01:00 - 1000