Java 如何减去两个joda日期时间?

Java 如何减去两个joda日期时间?,java,datetime,jodatime,Java,Datetime,Jodatime,我知道这不是“应该的工作方式”,但是:如果你有两个DateTime对象,用什么好方法减去它们?是否将它们转换为日期对象 DateTime start = new DateTime(); System.out.println(start + " - doing some stuff"); // do stuff DateTime end = new DateTime(); Period diff = // end - start ??? System.out.println(end + " -

我知道这不是“应该的工作方式”,但是:如果你有两个DateTime对象,用什么好方法减去它们?是否将它们转换为日期对象

DateTime start = new DateTime();
System.out.println(start + " - doing some stuff");

// do stuff

DateTime end = new DateTime();
Period diff = // end - start ???
System.out.println(end + " - doing some stuff took diff seconds");
期间有:


ReadableInstant
是一个由
DateTime
以及其他类实现的接口。)

我认为您可以使用构造函数创建一个
期间
,该构造函数包含两个
DateTime
对象。

取决于您希望获得的精度。您应该检查
org.joda.time
包,并检查助手类,如
Hours
Days
,等等。

这有帮助吗? 它显示了下面的示例

DateTime start = new DateTime(2004, 12, 25, 0, 0, 0, 0);
DateTime end = new DateTime(2006, 1, 1, 0, 0, 0, 0);

// period of 1 year and 7 days
Period period = new Period(start, end);

// calc will equal end
DateTime calc = start.plus(period);

// able to calculate whole days between two dates easily
Days days = Days.daysBetween(start, end);

从您的示例中,您似乎希望以秒为单位计算差异,因此:


应该对你有帮助。@karmanaut-谢谢,以dup结尾。@karmanaut这个问题实际上没有涉及到同样的问题。它计算两个瞬间之间的天数,而不是从开始日期和结束日期到一个期间的一般方式。请参见:@ParkashKumar Good catch,间隔时间可能更适合此用途。
DateTime start = new DateTime(2004, 12, 25, 0, 0, 0, 0);
DateTime end = new DateTime(2006, 1, 1, 0, 0, 0, 0);

// period of 1 year and 7 days
Period period = new Period(start, end);

// calc will equal end
DateTime calc = start.plus(period);

// able to calculate whole days between two dates easily
Days days = Days.daysBetween(start, end);
Seconds diff = Seconds.secondsBetween(start, end);