java 获取日期相隔天数
时间: 2023-06-05 07:09:05 浏览: 148
您好!对于您的问题,我可以给出以下代码实现:
```java
public static long getDaysBetween(Date startDate, Date endDate) {
long start = startDate.getTime();
long end = endDate.getTime();
long diff = end - start;
return TimeUnit.DAYS.convert(diff, TimeUnit.MILLISECONDS);
}
```
在得到两个日期的 Date 对象后,可以调用以上方法获取相隔的天数。希望能够解决您的问题。
相关问题
java怎么计算相隔多少天_java计算两个日期之间相差天数和相隔天数详解
Java计算两个日期之间相差天数可以使用Java 8中的新时间API解决。以下是计算相隔天数的示例代码:
```java
import java.time.LocalDate;
import java.time.temporal.ChronoUnit;
public class DateUtils {
public static long getDaysBetweenDates(LocalDate startDate, LocalDate endDate) {
return ChronoUnit.DAYS.between(startDate, endDate);
}
public static void main(String[] args) {
LocalDate startDate = LocalDate.of(2021, 9, 1);
LocalDate endDate = LocalDate.of(2021, 9, 20);
long daysBetweenDates = getDaysBetweenDates(startDate, endDate);
System.out.println("相隔天数:" + daysBetweenDates);
}
}
```
运行上述代码,将会输出:相隔天数:19
需要注意的是,Java 8中的新时间API LocalDate类的实例是不可变的,因此计算相隔天数时不会改变原始日期对象。
如果你需要计算两个日期之间相差的工作日(不包括周末和节假日),可以使用第三方库jollyday来实现。你可以在项目中添加以下依赖项:
```xml
<dependency>
<groupId>de.jollyday</groupId>
<artifactId>jollyday</artifactId>
<version>0.5.9</version>
</dependency>
```
然后,使用以下代码计算相隔工作日数量:
```java
import de.jollyday.HolidayCalendar;
import de.jollyday.HolidayManager;
import java.time.LocalDate;
import java.util.HashSet;
import java.util.Set;
public class DateUtils {
public static long getWorkingDaysBetweenDates(LocalDate startDate, LocalDate endDate) {
Set<LocalDate> holidays = getHolidays(startDate, endDate);
long daysBetween = startDate.datesUntil(endDate).count();
long workingDays = 0;
for (int i = 0; i < daysBetween; i++) {
LocalDate date = startDate.plusDays(i);
if (isWorkingDay(date) && !holidays.contains(date)) {
workingDays++;
}
}
return workingDays;
}
private static Set<LocalDate> getHolidays(LocalDate startDate, LocalDate endDate) {
HolidayManager holidayManager = HolidayManager.getInstance(HolidayCalendar.CHINA);
Set<LocalDate> holidays = new HashSet<>();
for (LocalDate date = startDate; date.isBefore(endDate); date = date.plusDays(1)) {
if (holidayManager.isHoliday(date)) {
holidays.add(date);
}
}
return holidays;
}
private static boolean isWorkingDay(LocalDate date) {
return date.getDayOfWeek().getValue() <= 5;
}
public static void main(String[] args) {
LocalDate startDate = LocalDate.of(2021, 9, 1);
LocalDate endDate = LocalDate.of(2021, 9, 20);
long workingDaysBetweenDates = getWorkingDaysBetweenDates(startDate, endDate);
System.out.println("相隔工作日:" + workingDaysBetweenDates);
}
}
```
运行上述代码,将会输出:相隔工作日:14
在上述示例代码中,我们使用了HolidayManager类和HolidayCalendar枚举来获取指定日期范围内的节假日。然后,我们使用isWorkingDay方法来检查日期是否为工作日,并使用Set集合来保存所有节假日。最后,我们遍历日期范围内的每一天,并使用isWorkingDay和holidays集合来计算相隔工作日的数量。
java 传入两个日期Date类型 1.获取相隔天数 2.获取相隔的日期是多少
可以使用Java中的`Date`和`Calendar`类来计算两个日期之间的天数和日期。以下是示例代码:
```java
import java.util.Calendar;
import java.util.Date;
public class DateUtils {
/**
* 获取两个日期之间相隔的天数
* @param date1 第一个日期
* @param date2 第二个日期
* @return 相隔天数
*/
public static int getDaysBetween(Date date1, Date date2) {
// 将日期转换成Calendar类型
Calendar calendar1 = Calendar.getInstance();
calendar1.setTime(date1);
Calendar calendar2 = Calendar.getInstance();
calendar2.setTime(date2);
// 获取两个日期的毫秒数并计算相差的天数
long milliseconds1 = calendar1.getTimeInMillis();
long milliseconds2 = calendar2.getTimeInMillis();
long diff = Math.abs(milliseconds2 - milliseconds1);
int diffDays = (int) (diff / (24 * 60 * 60 * 1000));
return diffDays;
}
/**
* 获取某个日期之后或之前相隔指定天数的日期
* @param date 原始日期
* @param days 相隔天数,可以为负数表示之前的日期
* @return 相隔指定天数后的日期
*/
public static Date getDateAfterDays(Date date, int days) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.DAY_OF_MONTH, days);
return calendar.getTime();
}
}
```
使用示例:
```java
// 创建两个日期
Date date1 = new Date();
Date date2 = DateUtils.getDateAfterDays(date1, 10);
// 获取相隔天数
int days = DateUtils.getDaysBetween(date1, date2);
System.out.println("相隔天数:" + days);
// 获取相隔日期
Date date3 = DateUtils.getDateAfterDays(date1, 5);
System.out.println("相隔日期:" + date3);
```
输出结果:
```
相隔天数:10
相隔日期:Wed Feb 10 14:37:21 CST 2021
```
阅读全文