46

假设有两个日期 A(开始时间)和 B(结束时间)。A & B 可以是同一天的时间,也可以是不同的时间。我的任务是以秒为单位显示差异。我使用的日期格式是

Date Format :: "yyyy-MM-dd'T'HH:mm:ss.SSSZ" 

例如

start date ::   "2011-11-16T14:09:23.000+00:00"
end date ::     "2011-11-17T05:09:23.000+00:00"            

帮助表示赞赏。

4

2 回答 2

112

使用Seconds类:

DateTime now = DateTime.now();
DateTime dateTime = now.plusMinutes(10);
Seconds seconds = Seconds.secondsBetween(now, dateTime);
System.out.println(seconds.getSeconds());

这段代码打印出 600。我想这就是你所需要的。

作为进一步的建议,请探索joda-time. 它非常好,而且大多数东西都很容易发现。

如果您在解析日期方面需要一些帮助(确实在文档中),请查看相关问题,如下所示:

使用带时区的 Joda 解析日期

于 2013-02-28T11:59:46.763 回答
7

在大多数情况下,@pcalcao 的答案是最好的。请注意,秒数将四舍五入为整数。

如果您对亚秒精度感兴趣,只需减去毫秒:

double seconds = (now.getMillis() - dateTime.getMillis()) / 1000d;
于 2015-10-02T16:08:47.283 回答