计算两个日期相差天数

系统管理员 2024-03-26 14:54 160阅读 0赞

计算两个日期相差的天数,看似简单实则可能存在坑

方法一 (最常用)

计算两个日期相差天数,按照自然日算,以00点为分界点

  1. /**
  2. * 计算两个日期相差天数,自然日
  3. * @param start 开始时间
  4. * @param end 结束时间
  5. * @return
  6. */
  7. public static long daysBetween(Date start, Date end) {
  8. LocalDate localDate_start = start.toInstant().atZone(ZoneOffset.ofHours(8)).toLocalDate();
  9. LocalDate localDate_end = end.toInstant().atZone(ZoneOffset.ofHours(8)).toLocalDate();
  10. return Math.abs(localDate_end.toEpochDay() - localDate_start.toEpochDay());
  11. }

方法二

计算两个日期相差天数,相差24小时才算作间隔一天

例如:2023-02-26 10:10:10 和 2023-02-27 09:10:10 相差不足24小时,两个日期计算后得到结果为:相隔 0 天。

  1. /**
  2. * 计算两个日期相差天数,相差24小时才算作隔一天
  3. * @param start 开始时间
  4. * @param end 结束时间
  5. * @return
  6. */
  7. public static long daysBetween(long start, long end) {
  8. long time = Math.abs(end - start);
  9. return time / 1000 / 60 / 60 / 24;
  10. }

测试方法:

  1. public static void main(String[] args) throws ParseException {
  2. SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  3. Date start = df.parse("2023-02-26 10:10:10");
  4. Date end = df.parse("2023-02-27 09:10:10");
  5. long day = DateUtil.daysBetween(start,end);
  6. System.out.println("时间差 "+day);
  7. long day2 = DateUtil.daysBetween(start.getTime(), end.getTime());
  8. System.out.println("时间差 "+day2);
  9. }

cb8ffacde97439a2795caa7ec9b9930e.png

发表评论

表情:
评论列表 (有 0 条评论,160人围观)

还没有评论,来说两句吧...

相关阅读