我有一个代码,可以让我了解从今天到某个特定日期的天数差异。

但我有一个限制:传递日期:2018-10-21,返回差值1天。

public static void main(String[] args) {

    diffInDays("2018-10-21T11:22:05.874-02:00[America/Sao_Paulo]"); // 968 : OK!
    diffInDays("2018-10-22T11:22:05.874-02:00[America/Sao_Paulo]"); // 968 <- NOK! Should be: 969
}

public static void diffInDays(String date){
    ZonedDateTime parsedDate = java.time.ZonedDateTime.parse(date, DateTimeFormatter.ISO_ZONED_DATE_TIME);
    ZonedDateTime parseDateTruncateToDays = parsedDate.truncatedTo(ChronoUnit.DAYS);
    ZonedDateTime currentDateZonedDateTime = java.time.ZonedDateTime.now().truncatedTo(ChronoUnit.DAYS);
    long diffInDays = java.time.Duration.between(currentDateZonedDateTime, parseDateTruncateToDays).toDays();
    System.out.println(diffInDays);
}


您对此有任何想法吗?

最佳答案

我不确定为什么它不起作用-可能是因为Duration忽略了DST,并且时间在10月21日或22日发生了变化。

使用它会更有意义:

return ChronoUnit.DAYS.between(currentDateZonedDateTime, parseDateTruncateToDays);

关于java - 日期差异(以天为单位)将相同的值返回不同的日期,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35657892/

10-12 02:53