计算两个日期相差天数
计算两个日期相差的天数,看似简单实则可能存在坑
方法一 (最常用)
计算两个日期相差天数,按照自然日算,以00点为分界点
/**
* 计算两个日期相差天数,自然日
* @param start 开始时间
* @param end 结束时间
* @return
*/
public static long daysBetween(Date start, Date end) {
LocalDate localDate_start = start.toInstant().atZone(ZoneOffset.ofHours(8)).toLocalDate();
LocalDate localDate_end = end.toInstant().atZone(ZoneOffset.ofHours(8)).toLocalDate();
return Math.abs(localDate_end.toEpochDay() - localDate_start.toEpochDay());
}
方法二
计算两个日期相差天数,相差24小时才算作间隔一天
例如:2023-02-26 10:10:10 和 2023-02-27 09:10:10 相差不足24小时,两个日期计算后得到结果为:相隔 0 天。
/**
* 计算两个日期相差天数,相差24小时才算作隔一天
* @param start 开始时间
* @param end 结束时间
* @return
*/
public static long daysBetween(long start, long end) {
long time = Math.abs(end - start);
return time / 1000 / 60 / 60 / 24;
}
测试方法:
public static void main(String[] args) throws ParseException {
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date start = df.parse("2023-02-26 10:10:10");
Date end = df.parse("2023-02-27 09:10:10");
long day = DateUtil.daysBetween(start,end);
System.out.println("时间差 "+day);
long day2 = DateUtil.daysBetween(start.getTime(), end.getTime());
System.out.println("时间差 "+day2);
}
还没有评论,来说两句吧...