首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在java 7中将两个日期之间的差异转换为天。

在java 7中将两个日期之间的差异转换为天。
EN

Stack Overflow用户
提问于 2019-07-08 16:22:01
回答 2查看 90关注 0票数 0

我想比较java中的两个日期,并需要将这两个日期之间的差异转换为天。

代码语言:javascript
运行
复制
//Setting up date
Calendar cal = Calendar.getInstance();
cal.set(2019, 5, 16);
Date d = cal.getTime();

产出如下:孙俊16 : 11:04:57世界协调时2019年

代码语言:javascript
运行
复制
//Getting the current date instance
Calendar cal1 = Calendar.getInstance();
Date d1 = cal1.getTime();

输出如下:周一7月08 :04:57世界协调时2019年

需要在几天内得到d与d1之间的差异。

提前感谢您抽出时间提供解决方案。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-07-08 16:25:46

在这里,你只需做简单的数学。

代码语言:javascript
运行
复制
Calendar start = Calendar.getInstance();
Calendar end = Calendar.getInstance();
start.set(2010, 7, 23);
end.set(2010, 8, 26);
Date startDate = start.getTime();
Date endDate = end.getTime();
long startTime = startDate.getTime();
long endTime = endDate.getTime();
long diffTime = endTime - startTime;
long diffDays = diffTime / (1000 * 60 * 60 * 24);
DateFormat dateFormat = DateFormat.getDateInstance();
System.out.println("The difference between "+
  dateFormat.format(startDate)+" and "+
  dateFormat.format(endDate)+" is "+
  diffDays+" days.");

当跨越夏令时(或闰秒)时,这将不起作用,也可能在使用一天中不同的时间时不给出预期的结果。您可以这样修改它:

代码语言:javascript
运行
复制
start.add(Calendar.DAY_OF_MONTH, (int)diffDays);
while (start.before(end)) {
    start.add(Calendar.DAY_OF_MONTH, 1);
    diffDays++;
}
while (start.after(end)) {
    start.add(Calendar.DAY_OF_MONTH, -1);
    diffDays--;
}

希望这能有所帮助。祝好运。

票数 1
EN

Stack Overflow用户

发布于 2019-07-08 16:26:18

最简单的方法:

代码语言:javascript
运行
复制
public static long getDifferenceDays(Date d, Date d1) {
    long diff = d1.getTime() - d.getTime();
    return TimeUnit.DAYS.convert(diff, TimeUnit.MILLISECONDS);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56938992

复制
相关文章

相似问题

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