关于java:如何减去两个joda日期时间?

How to subtract two joda datetimes?

本问题已经有最佳答案,请猛点这里访问。

我知道这不是"它应该工作的方式",但是:如果您有两个日期时间对象,那么减去它们的好方法是什么?将它们转换为日期对象?

1
2
3
4
5
6
7
8
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");


Period有一个构造函数,它接受两个ReadableInstant实例:

1
Period diff = new Period(start, end);

(ReadableInstant是由DateTime和其他类实现的接口。)


从您的示例中,您似乎希望以秒为单位获得差异,因此这将有助于:

1
Seconds diff = Seconds.secondsBetween(start, end);


这有帮助吗?http://joda-time.sourceforge.net/key_period.html它显示了下面的示例

1
2
3
4
5
6
7
8
9
10
11
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);

这取决于你想要达到的精度。您应该检查org.joda.time包,并检查助手类,如HoursDays等。


我认为您可以使用这个构造函数创建一个Period,它接受两个DateTime对象。