【问题标题】:Java: Why java.LocalDate format giving 0 days between 2018-10-25 to 2019-10-25?Java:为什么 java.LocalDate 格式在 2018-10-25 到 2019-10-25 之间给出 0 天?
【发布时间】:2019-03-16 11:29:42
【问题描述】:
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.Period;
import java.time.format.DateTimeFormatter;


import java.util.Date;
public class DateChal {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        LocalDate start=LocalDate.parse("2018-10-25");
        LocalDate end=LocalDate.parse("2019-10-25");


        Period p=Period.between(start, end);

        System.out.println("Number of days "+p.getDays());

    }

}

o/p:Number of days 0 如何解决这个问题?请解释什么是 也错了?

【问题讨论】:

  • 没有错。它返回的是天数字段,而不是整个天数。试试p.getYears(),你会得到1
  • 请建议如何使用 LocalDate 查找两个日期之间的天数?
  • ChronoUnit.DAYS.between(start, end)(在您的情况下返回 365)。
  • 相关:How to calculate the number of days in a period?(谢谢,SHASHI SHEKHAR Barnwal)

标签: java datediff period localdate


【解决方案1】:

结果周期为 1 年 0 月 0 日。您只需打印天数,即 0。

【讨论】:

  • 如果我不知道用户输入日期的区别是什么,那么如何找到日期?例如开始:2018-10-15 结束:2018-10-25...代码工作正常,但不适用于上述情况..那该怎么办?
【解决方案2】:

0 是天之间的差异。 如果你打印p.getYears()你会看到1。

【讨论】:

    【解决方案3】:

    正如 soon 已经提到的,在您的情况下,期间列出了 1 年 (P1Y), 在这里,您尝试将 1 年转换为天数,因为天数为 0,它列出了 0。 How to calculate the number of days in a period?

    【讨论】:

      【解决方案4】:
      SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy", Locale.ENGLISH);
      Date firstDate = sdf.parse("06/30/2017");
      Date secondDate = sdf.parse("06/30/2018");
      
      long diffInMillies = Math.abs(secondDate.getTime() - firstDate.getTime());
      long diff = TimeUnit.DAYS.convert(diffInMillies, TimeUnit.MILLISECONDS);
      
      System.out.println(diff);
      

      【讨论】:

      • 如果没有任何解释,纯代码的答案并不是那么有用。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-04
      • 1970-01-01
      • 2020-02-21
      • 2016-03-05
      • 2015-03-04
      相关资源
      最近更新 更多