Joda时间计算两个日期时间对象之间的天,小时,分钟和秒

Nic*_*uir 0 java jodatime

我想找到两个日期/时间之间的日,小时,分钟和秒.我以为我可以使用句号,我尝试了下面的代码,但我得到了一个非荒谬的答案.

    DateTime dt1 = new DateTime("2004-12-13T21:39:45.618-06:00");
    DateTime dt2 = new DateTime("2004-12-13T21:39:45.618-08:00");
    Period p = new Period(dt1, dt2);

    System.out.println("Test: " + p);
Run Code Online (Sandbox Code Playgroud)

从这里我得到输出:

I/System.out: Test: PT2H
Run Code Online (Sandbox Code Playgroud)

不确定这是什么意思.

谢谢你的帮助

alb*_*iff 5

toString()method in Period为您提供ISO8601持续时间格式的值.

来自API:

以ISO8601持续时间格式的样式获取值作为String.从技术上讲,输出可能违反ISO规范,因为可能包含数周.例如,"PT6H3M5S"代表6小时,3分钟,5秒.

当您要求单独获取日期,小时,分钟秒时,您可以使用getAPI中的便捷方法:

import org.joda.time.DateTime;
import org.joda.time.Period;

...
DateTime dt1 = new DateTime("2004-12-13T21:39:45.618-06:00");
DateTime dt2 = new DateTime("2004-12-13T21:39:45.618-08:00");
Period p = new Period(dt1, dt2);

System.out.println("DAYS: " + p.getDays())
System.out.println("HOURS: " + p.getHours());
System.out.println("MINUTES: " + p.getMinutes());
System.out.println("SECONDS: " + p.getSeconds());
Run Code Online (Sandbox Code Playgroud)

或者作为其他答案建议使用PeriodFormatter.