
java中日期如何相减
用户关注问题
我有两个日期对象,想要知道它们之间相差多少天,应该使用哪种方法实现?
使用Java的时间API计算日期差异
可以使用Java 8引入的java.time包中的LocalDate类,调用其until方法或使用ChronoUnit.DAYS.between方法来计算两个日期之间的天数差。例如:
LocalDate startDate = LocalDate.of(2023, 1, 1);
LocalDate endDate = LocalDate.of(2023, 1, 10);
long daysBetween = ChronoUnit.DAYS.between(startDate, endDate);
我需要计算两个日期时间点相差多少小时和分钟,Java有哪些办法实现?
使用LocalDateTime和Duration计算时间差
可以使用LocalDateTime表示日期和时间,借助Duration类计算两个日期时间的相差时长。示例代码:
LocalDateTime start = LocalDateTime.of(2023, 1, 1, 8, 30);
LocalDateTime end = LocalDateTime.of(2023, 1, 1, 12, 45);
Duration duration = Duration.between(start, end);
long hours = duration.toHours();
long minutes = duration.toMinutesPart();
如果我使用的是Java 7或者以前版本,没有java.time包,怎么计算日期间隔?
利用java.util.Date和计算毫秒值实现日期相减
在Java 7及之前版本,可以通过java.util.Date获取两个日期的时间戳(以毫秒计),然后相减得到时间差,再转换为天数或小时。例如:
Date date1 = sdf.parse("2023-01-01");
Date date2 = sdf.parse("2023-01-05");
long diffInMillies = date2.getTime() - date1.getTime();
long diffInDays = TimeUnit.DAYS.convert(diffInMillies, TimeUnit.MILLISECONDS);