0

2 つの Java 日付の間の期間を取得するのに助けが必要です。計算に JodaTime を使用していますが、結果が正しくありません。

開始: 11.11.2012 12:00
終了: 16.12.2012 20:15
(ドイツ時間標準)
結果は 5 週 0 日 8 時間 15 分である必要があります。

で試してみます

Period period = new Period( start.getTime(), end.getTime() );
weeks = Weeks.weeksBetween( new DateTime( start ), new DateTime( end ) ).getWeeks();
days = period.getDays();
hours = period.getHours();
minutes = period.getMinutes();

そして5w 5d 8h 15mを得ました。

編集:
助けてくれてありがとう、でも私は JodaTime 期間を間違って使用していると思います。もちろん、5w 5d 8h 15m の出力ですが、私が欲しいのはこのようなものです。

int days = Days.daysBetween( start, end ); // musst be 35 days
int weeks = ( days - ( days % 7 ) ) / 7;
days = days % 7;

今、私の結果は5週と0日です。混乱して申し訳ありません。助けてくれてありがとう。

4

2 に答える 2

4
    DateTime start = new DateTime(new Date(2012, 11, 11, 12, 00, 00));
    DateTime end = new DateTime(new Date(2012, 12, 16, 20, 15, 00));
    Period period = new Period(start, end);
    System.out.println("Weeks: " + Weeks.weeksBetween( new DateTime( start ), new DateTime( end ) ).getWeeks());
    System.out.println("Days: " + period.getDays());
    System.out.println("Hours: " + period.getHours());
    System.out.println("Minutes: " + period.getMinutes());  

出力は

    Weeks: 5
    Days: 5
    Hours: 8
    Minutes: 15  

次の解決策を使用する
代わりに、魅力のように機能します(を使用して) Weeks.weeksBetweenPeriodType

PeriodType periodType = PeriodType.standard().withMonthsRemoved();
Period period = new Period(new Date(2012, 11, 11, 12, 00, 00).getTime(), new Date(2012, 12, 16, 20, 15, 00).getTime(), periodType);
System.out.println(period.getWeeks());  

出力は

5
于 2012-12-17T21:36:49.823 に答える
0

必要な出力については、これが解決策だと思います:

    DateTime start = new DateTime(2012, 11, 11, 12, 0);
    DateTime end = new DateTime(2012, 12, 16, 20, 15);

    Weeks weeks = Weeks.weeksBetween(start, end);
    Period period = new Period(start.plus(weeks), end);
    System.out.println("Weeks : " + weeks.getWeeks());
    System.out.println("Days : " + period.getDays());
    System.out.println("Hours : " + period.getHours());
    System.out.println("Minutes : " + period.getMinutes());

期間は、5 週間ではなく 1 か月と見なされます。そのため、最初に 2 つの日付の間の週を数え、残りの部分に Period を使用します。

于 2012-12-17T21:50:00.180 に答える