【问题标题】:Converting difference between 2 dates to days in java 7 [duplicate]在java 7中将2个日期之间的差异转换为天数[重复]
【发布时间】:2019-11-18 05:01:07
【问题描述】:

我想比较java中的2个日期,需要将2个日期之间的差异转换为天数

//Setting up date
Calendar cal = Calendar.getInstance();
cal.set(2019, 5, 16);
Date d = cal.getTime();

输出将是这样的:Sun Jun 16 11:04:57 UTC 2019

//Getting the current date instance
Calendar cal1 = Calendar.getInstance();
Date d1 = cal1.getTime();

输出将是这样的:Mon Jul 08 11:04:57 UTC 2019

需要以天计算 d 和 d1 之间的差异。

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

【问题讨论】:

  • 你使用什么 Java 版本?
  • @PM77-1 我正在使用 java-7
  • 使用新的时间和日期方法。日历永远不应该在新代码中使用。
  • 可以切换到java 8或更高版本吗?
  • 这对于旧的Calendar 类来说真的很复杂。请考虑ThreeTen Backport,它是现代 Java 日期和时间 API 的 java.time 的 Java 6 和 7 的反向移植。有了它,这将是小菜一碟,并提供非常可读的代码。

标签: java datetime calendar simpledateformat timeunit


【解决方案1】:

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

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.");

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

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--;
}

希望这会有所帮助。祝你好运。

【讨论】:

    【解决方案2】:

    最简单的方法:

    public static long getDifferenceDays(Date d, Date d1) {
        long diff = d1.getTime() - d.getTime();
        return TimeUnit.DAYS.convert(diff, TimeUnit.MILLISECONDS);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-24
      • 1970-01-01
      • 1970-01-01
      • 2011-03-20
      • 2011-03-19
      • 2012-09-09
      • 1970-01-01
      • 2013-09-11
      相关资源
      最近更新 更多