如何在Java中以年月和日为单位找到两个日期之间的差异?

riz*_*ius 2 java date date-difference

假设我有: 员工具有模型的startDate作为其属性变量和推广模式有promotionDate。我想知道员工在晋升之前工作了多长时间,我必须找到promotionDate 和startDate 之间的差异。如果我将 startDate 作为employee.getStartDate()和promotionDate 作为promotion.getPromotionDate,我怎么能找到在年月日差为任何日期,

任何帮助将非常感激。

更新:我解决了以下问题

String startDate = "2018-01-01";
String promotionDate = "2019-11-08";

LocalDate sdate = LocalDate.parse(startDate);
LocalDate pdate = LocalDate.parse(promotionDate);

LocalDate ssdate = LocalDate.of(sdate.getYear(), sdate.getMonth(), sdate.getDayOfMonth());
LocalDate ppdate = LocalDate.of(pdate.getYear(), pdate.getMonth(), pdate.getDayOfMonth());

Period period = Period.between(ssdate, ppdate);
System.out.println("Difference: " + period.getYears() + " years " 
                                  + period.getMonths() + " months "
                                  + period.getDays() + " days ");
Run Code Online (Sandbox Code Playgroud)

谢谢你。

Rus*_*lan 5

使用LocalDate.of(int year, int month, int dayOfMonth)from java8 您可以创建两个日期并找到差异:

LocalDate firstDate = LocalDate.of(2015, 1, 1);
LocalDate secondDate = LocalDate.of(2018, 3, 4);

Period period = Period.between(firstDate, secondDate);
Run Code Online (Sandbox Code Playgroud)

Period有这样的方法.getYears().getMonths()等等。

如果您有java.util.Date对象而不是 int values 2015, 1, 1,则可以转换DateLocalDate之前:

LocalDate startLocalDate = startDate.toInstant()
        .atZone(ZoneId.systemDefault())
        .toLocalDate();
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

4555 次

最近记录:

6 年,11 月 前