2017-04-19 3 views
-2

私は開始日と終了日を持っているため、期間が短くなるか、年数が長くなる可能性があります。たとえば、期間を同じにしてスライスすることができます:Java:Jodaの開始日と終了日時はどのようにN個に分割するのですか?

以下の期間は約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 
+0

何らかの理由なく質問を投票しただけで、誰かが間違っていたことをどのように知っていたのですか? – Soumyaansh

答えて

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 
} 
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; 
    } 
関連する問題