使用Java计算时差时JodaTime的奇怪格式

时间:2016-05-04 10:30:28

标签: time jodatime localtime

我试图用下面的代码找到两次之间的持续时间:

                    DateTimeFormatter formatter = DateTimeFormat.forPattern("HH:mm");
                        System.out.println(airTime1);
                        System.out.println(startTime1);
                    Minutes difference = ((Minutes.minutesBetween(startTime1,airTime1)));
                    String differenceS = String.valueOf(difference);
                        System.out.println(differenceS);
                    LocalTime remaining1 = formatter.parseLocalTime(differenceS);
                        System.out.println(remaining1);

airTime1& startTime1都是localTime变量。差异应包含两次之间的持续时间。 differenceS是差异的String表示,因为分钟不能转换为String。

当我输入诸如12:00和&等变量的时间时13:00,变量记录为:12:00:00.000& 13:00:00.000,但差异S收到PT-60M的值,这显然会引发错误。有谁知道为什么分钟差异线可以计算这个值?

提前致谢!

1 个答案:

答案 0 :(得分:1)

jodatime 分钟类以一种方式覆盖toString()方法,该方法返回{8}中提到的ISO8601持续时间格式的字符串。这正是您的 PT-60M 所代表的内容。持续时间为-60分钟。

如果您只想打印原始分钟,您的代码可能如下所示:

DateTimeFormatter formatter = DateTimeFormat.forPattern("HH:mm");
System.out.println(airTime1);
System.out.println(startTime1);
Minutes difference = Minutes.minutesBetween(startTime1,airTime1);
System.out.println(Math.abs(difference.getMinutes()));