首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >计算java中的日期/时间差

计算java中的日期/时间差
EN

Stack Overflow用户
提问于 2011-03-18 19:43:08
回答 17查看 440.9K关注 0票数 160

我想用小时/分钟/秒来计算两个日期之间的差值。

我的代码有一个小问题,它是:

代码语言:javascript
复制
String dateStart = "11/03/14 09:29:58";
String dateStop = "11/03/14 09:33:43";

// Custom date format
SimpleDateFormat format = new SimpleDateFormat("yy/MM/dd HH:mm:ss");  

Date d1 = null;
Date d2 = null;
try {
    d1 = format.parse(dateStart);
    d2 = format.parse(dateStop);
} catch (ParseException e) {
    e.printStackTrace();
}    

// Get msec from each, and subtract.
long diff = d2.getTime() - d1.getTime();
long diffSeconds = diff / 1000;         
long diffMinutes = diff / (60 * 1000);         
long diffHours = diff / (60 * 60 * 1000);                      
System.out.println("Time in seconds: " + diffSeconds + " seconds.");         
System.out.println("Time in minutes: " + diffMinutes + " minutes.");         
System.out.println("Time in hours: " + diffHours + " hours."); 

这应该会产生:

代码语言:javascript
复制
Time in seconds: 45 seconds.
Time in minutes: 3 minutes.
Time in hours: 0 hours.

然而,我得到了这个结果:

代码语言:javascript
复制
Time in seconds: 225 seconds.
Time in minutes: 3 minutes.
Time in hours: 0 hours.

有没有人看到我做错了什么?

EN

回答 17

Stack Overflow用户

回答已采纳

发布于 2011-03-18 19:46:01

试一试

代码语言:javascript
复制
long diffSeconds = diff / 1000 % 60;  
long diffMinutes = diff / (60 * 1000) % 60; 
long diffHours = diff / (60 * 60 * 1000);

注意:这里假设diff是非负的。

票数 104
EN

Stack Overflow用户

发布于 2013-11-15 18:10:56

我更喜欢使用推荐的java.util.concurrent.TimeUnit类。

代码语言:javascript
复制
long diff = d2.getTime() - d1.getTime();//as given

long seconds = TimeUnit.MILLISECONDS.toSeconds(diff);
long minutes = TimeUnit.MILLISECONDS.toMinutes(diff); 
票数 227
EN

Stack Overflow用户

发布于 2011-03-18 19:51:42

如果您能够使用外部库,我建议您使用Joda-Time,请注意:

Joda time是JavaSE8之前的

事实上的标准日期和时间库,现在要求用户迁移到java.time (JSR310)。

between计算示例:

代码语言:javascript
复制
Seconds.between(startDate, endDate);
Days.between(startDate, endDate);
票数 45
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5351483

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档