首页 > 解决方案 > 从Java中的当天减去日期

问题描述

我有一个特定的日期格式。我可以减去 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是什么类型

标签: javadate

解决方案


使用 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

推荐阅读