用Java从当前日期减去日期

时间:2020-08-27 18:07:48

标签: java date

我有一个特殊的日期格式。我可以减去2个日期,但我无法从将来的日期中减去今天的日期。

我找到了获取今天日期的方法

DateTimeFormatter dtf = DateTimeFormatter.ofPattern("dd/MM/yyyy");
    LocalDateTime now = LocalDateTime.now();
    System.out.println(dtf.format(now));

这是我减去2个日期(字符串)的方式

public boolean DateDiff(String datep,String dater) {
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy");
        LocalDate date1 = LocalDate.parse(datep, formatter);
        LocalDate date2 = LocalDate.parse(dater, formatter);
        
        long elapsedDays = ChronoUnit.DAYS.between(date1, date2);

我无法将当前日期转换为字符串,因此我可以使用2种相同类型的变量进行减去。 LocalDateTime现在是哪种类型?

4 个答案:

答案 0 :(得分:2)

使用LocalDate的minusDays()函数可以轻松地减去日期:

LocalDate now = LocalDate.now();
LocalDate thirtyDaysAgo = now.minusDays(30);

如果您有标准的日期字符串,请参阅“ 2020-08-27”,可以通过以下方式进行解析:

String date = "2020-08-27";
LocalDate thirtyDaysAgo = LocalDate.parse(date).minusDays(30);
System.out.println(thirtyDaysAgo); //prints 2020-07-28

如果您使用特殊的日期格式,请参阅“ 2020/08/27”,以这种方式进行解析:

String date = "2020/08/27";
LocalDate thirtyDaysAgo = LocalDate.parse(date, DateTimeFormatter.ofPattern("yyyy/MM/dd")).minusDays(30);
System.out.println(thirtyDaysAgo); //prints 2020-07-28

要将LocalDate转换为具有格式的字符串,请按以下方式操作:

LocalDate date = LocalDate.now();
String formatedDate = date.format(DateTimeFormatter.ofPattern("yyyy/MM/dd"));
System.out.println(formatedDate); //prints 2020/08/27

答案 1 :(得分:1)

使用LocalDate代替LocalDateTime获取今天的日期

LocalDate currentDate = LocalDate.now();

由于某些原因,如果您仍然想使用LocalDateTime来获取今天的日期,这就是您可以采用的方式

LocalDateTime currentDateTime = LocalDateTime.now();
LocalDate currentDate = currentDateTime.toLocalDate();

如果您要按以下所需的格式将currentDate转换为String

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy");   
String currentDateString = currentDate.format(formatter);

如果您拥有的两个日期均为LocalDate类型,那么您可以找到它们之间的天数,如下所示:

public long DateDiff(LocalDate date1,LocalDate date2) {

    return Duration.between(date1, date2).toDays();
}

如果您拥有的两个日期均为String类型,那么您可以找到它们之间的天数,如下所示:

public long DateDiff(String dateString1,String dateString2) {

    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy");
    LocalDate date1 = LocalDate.parse(dateString1, formatter);
    LocalDate date2 = LocalDate.parse(dateString2, formatter);

   return Duration.between(date1, date2).toDays();
}

希望能解决您的问题

答案 2 :(得分:0)

在Java中处理日期时,可以使用joda-time库,这是一种幸福。

减去2个日期

DateTime yesterday = new DateTime().withTimeAtStartOfDay().minusMinutes(10);

DateTime twoDaysFromToday = new DateTime().withTimeAtStartOfDay().plusDays(2);

Days.daysBetween(yesterday.toLocalDate(), twoDaysFromToday.toLocalDate()).getDays();

答案 3 :(得分:0)

使用LocalDate(而不是LocalDateTime)。

    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy");
    
    LocalDate today = LocalDate.now(ZoneId.of("Asia/Calcutta"));
    LocalDate futureDate = LocalDate.parse("26/09/2020", formatter);
    long elapsedDays = ChronoUnit.DAYS.between(today, futureDate);
    
    System.out.println("Days until future date: " + elapsedDays);

当前运行时输出为:

距离未来日期的天数:29