Java 8 减去日期返回 1 天

标签 java date java-8

我正在阅读有关伟大新内容的文章 java.time Java 8 中的 API

类似这样的事情

public final class DaysWithBaby 
{
   private final LocalDate sheSayYes = LocalDate.of(2008,Month.APRIL,26);
   private final LocalDate today = LocalDate.now().plusDays(1);
   public static void main(String[] args) 
   {
       final DaysWithBaby clazz = new DaysWithBaby();
       System.out.println(Period.between(clazz.sheSayYes,clazz.today).getDays());
       System.out.println(ChronoUnit.DAYS.between(clazz.sheSayYes,clazz.today));  
   }    
}

下面列出了两个输出。

1
2467

我认为这个结果是正确的

System.out.println(ChronoUnit.DAYS.between(clazz.sheSayYes,clazz.today));  

但是返回 1 的结果又如何呢

System.out.println(Period.between(clazz.sheSayYes,clazz.today).getDays());

我做错了什么,非常感谢任何帮助。

最佳答案

类(class)Period代表若干年、月和日(按此顺序);如果您只想获得天数,则由您自行转换。

private static final LocalDate sheSayYes = LocalDate.of(2008, Month.APRIL,
        26);
private static final LocalDate today = LocalDate.now();

public static void main(String[] args) {
    Period p = Period.between(sheSayYes, today);
    System.out.printf("%d years, %d months, %d days%n", p.getYears(),
            p.getMonths(), p.getDays());
    System.out.println(ChronoUnit.DAYS.between(sheSayYes, today));
}

输出为

6 years, 9 months, 0 days
2466

0 天是正确的,因为今天是 26 号。

关于Java 8 减去日期返回 1 天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28150723/

相关文章:

c - 需要在 linux C 中获取星期六的日期

sql-server - 如何在 SSIS 中配置 foreach 循环容器以获取定义的开始和结束日期并在其间的每个日期运行?

JavaFX:舞台的 minHeight 考虑标题栏的高度

Java EL在jsp中查找主机和端口号

JavaScript - 解析 UTC 日期

java - 如何在 IntelliJ IDEA 13.1 中创建 Java 8 项目?

java - 从 CompletableFuture 抛出异常

java - 从 Android Studio Java 中的文本文件读取

java - 如何从特定的 jar 中获取资源

java - 扫描线填充,区分交点和峰