0

以下のコードがあります。Jodaを使用して2つの日付を比較しようとしているので、時間の違いを取得できます。これは、同じ日の2つの日付で正常に機能します(以下のテスト1を参照)。ただし、同じ日になっていない2つの日付を比較すると、間違った結果が得られます(以下のテスト2を参照) 。

DateTime end = new DateTime(event.endTime)
DateTime start = new DateTime(event.startTime)

Period p = new Period(start, end);

long hours = p.getHours();
long minutes = p.getMinutes();

System.out.println("Task title :"+ event.getTitle()+ " ...The differnce in hours is : "+hours+"  The differnce in minutes is : "+minutes)

2つのテストからの印刷結果。

最初は同じ日行われるタスクで、3時間の差があります。

2番目は翌日に終了するタスク です...前のタスクテストのように適切に違いを与えません

This is the END TIME :2012-10-12 14:15:00.0... This is the START TIME :2012-10-12 10:30:00.0
Task title :Test 1 ...The differnce in hours is : 3  The differnce in minutes is : 45

This is the END TIME :2012-10-12 22:00:00.0... This is the START TIME :2012-10-11 22:00:00.0
Task title :Test 999 ...The differnce in hours is : 0  The differnce in minutes is : 0

どんな援助も大歓迎です

4

1 に答える 1

0

これまでJodatimeを使用したことはなく、これをテストしたこともありませんが、いくつかのことがわかりました。

まず、Jodatime期間にはtoStandardHours()メソッドがあります。これは、.getHours()の代わりにおそらく必要なものです。.getHours()は2番目のテストで0を返しますが、.getDays()は1を返すため、.toStandardHours()は24を返す必要があります。http: //joda-time.sourceforge.net/apidocs/org/joda/time/Period .html

また、時間関数「hoursBetween」を使用することもできます。

 static Hours   hoursBetween(ReadableInstant start, ReadableInstant end)

APIを確認してください:http: //joda-time.sourceforge.net/apidocs/org/joda/time/Hours.html

于 2012-10-11T20:08:47.107 に答える