代码示例:
import java.time.*;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
public class DateUtil {
public static void main(String[] args) {
long subDays = subDaysByDate("2021-10-01", "2021-11-20");
System.out.println(subDays);
long subDays2 = subDaysByDate2("2021-10-01", "2021-11-20");
System.out.println(subDays2);
long subDays3 = subDaysByDateTime("2021-10-01 10:00:00", "2021-11-20 11:00:00");
System.out.println(subDays3);
}
private static final String DATE_PATTERN = "yyyy-MM-dd";
private static final String DATETIME_PATTERN = "yyyy-MM-dd HH:mm:ss";
/**
* 获取两个日期相差的天数 方法一
*
* @param startDate 开始日期的字符串 yyyy-MM-dd
* @param endDate 结束日期的字符串 yyyy-MM-dd
* @return 相差天数,如果解析失败则返回-1
**/
public static long subDaysByDate(String startDate, String endDate) {
long sub;
try {
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(DATE_PATTERN);
LocalDate start = LocalDate.parse(startDate, dateTimeFormatter);
LocalDate end = LocalDate.parse(endDate, dateTimeFormatter);
sub = Duration.between(LocalDateTime.of(start, LocalTime.of(0,0,0)),
LocalDateTime.of(end, LocalTime.of(0,0,0))).toDays();
} catch (DateTimeParseException e) {
sub = -1;
}
return sub;
}
/**
* 获取两个日期相差的天数 方法二
*
* @param startDate 开始日期的字符串
* @param endDate 结束日期的字符串
* @return 相差天数,如果解析失败则返回-1
**/
public static long subDaysByDate2(String startDate, String endDate) {
long sub;
try {
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(DATE_PATTERN);
LocalDate start = LocalDate.parse(startDate, dateTimeFormatter);
LocalDate end = LocalDate.parse(endDate, dateTimeFormatter);
sub = end.toEpochDay() - start.toEpochDay();
} catch (DateTimeParseException e) {
sub = -1;
}
return sub;
}
/**
* 获取两个日期相差的天数,丢球最后的时间
* @param startDate 开始日期的字符串
* @param endDate 结束日期的字符串
* @return 相差天数,如果解析失败则返回-1
**/
public static long subDaysByDateTime(String startDate, String endDate) {
long sub;
try {
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(DATETIME_PATTERN);
LocalDateTime start = LocalDateTime.parse(startDate, dateTimeFormatter);
LocalDateTime end = LocalDateTime.parse(endDate, dateTimeFormatter);
sub = Duration.between(start, end).toDays();
} catch (DateTimeParseException e) {
sub = -1;
}
return sub;
}
}
1622



被折叠的 条评论
为什么被折叠?



