0

我在下面有以下代码,我正在尝试使用 Joda 比较两个日期,所以我可以得到hours 的差异。这适用于同一天的两个日期(参见下面的测试 1)。但是,如果我比较两个不在同一天的日期,它只会给出错误的结果(见下面的测试 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)

两次测试的打印结果。

一个是同一天的任务,相差3小时。

第二个是在第二天结束的任务 ......它并没有像之前的任务测试那样正确地给出差异

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 Period 有一个 toStandardHours() 方法,这可能是您想要的,而不是 .getHours()。而 .getHours() 为您的第二次测试返回 0,因为 .getDays() 将返回 1,而 .toStandardHours() 应返回 24。 http://joda-time.sourceforge.net/apidocs/org/joda/time/Period .html

此外,您可以使用 Hours 函数“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 回答