java 计算两个日期的天数
时间: 2024-09-28 19:08:58 浏览: 34
在 Java 中,你可以使用 `java.time` 包下的 `Duration` 类或者 `java.util.Date` 和 `Calendar` 对象来计算两个日期之间的天数差。以下是两种方法:
**方法一:使用 `Duration` 类**
```java
import java.time.LocalDate;
import java.time.temporal.ChronoUnit;
public int daysBetween(LocalDate startDate, LocalDate endDate) {
return ChronoUnit.DAYS.between(startDate, endDate);
}
```
**方法二:使用 `Date` 和 `Calendar` 对象**
```java
import java.util.Calendar;
import java.util.Date;
public int daysBetween(Date startDate, Date endDate) {
Calendar startCal = Calendar.getInstance();
startCal.setTime(startDate);
Calendar endCal = Calendar.getInstance();
endCal.setTime(endDate);
// 将时间设置为同一天的开始
startCal.set(Calendar.HOUR_OF_DAY, 0);
startCal.set(Calendar.MINUTE, 0);
startCal.set(Calendar.SECOND, 0);
startCal.set(Calendar.MILLISECOND, 0);
endCal.set(Calendar.HOUR_OF_DAY, 0);
endCal.set(Calendar.MINUTE, 0);
endCal.set(Calendar.SECOND, 0);
endCal.set(Calendar.MILLISECOND, 0);
long diffInMilliseconds = Math.abs(endCal.getTimeInMillis() - startCal.getTimeInMillis());
return (int) (diffInMilliseconds / (1000 * 60 * 60 * 24));
}
```
**相关问题--:**
1. 使用 `Duration` 算法的时间复杂度是多少?
2. 为什么在第二种方法中需要将时间设置到同一天的开始?
3. 如果输入的日期是 `null`,这两种方法会怎样处理?
阅读全文