假设我有: 具有 startDate 作为其属性变量的 Employee 模型和 Promotion 模型具有 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 ");
谢谢。
答案 0 :(得分:3)
使用java8中的LocalDate.of(int year, int month, int dayOfMonth)
,您可以创建两个日期并找出不同之处:
LocalDate firstDate = LocalDate.of(2015, 1, 1);
LocalDate secondDate = LocalDate.of(2018, 3, 4);
Period period = Period.between(firstDate, secondDate);
Period
具有诸如.getYears()
,.getMonths()
等的方法。
如果您有java.util.Date
个对象而不是int值2015, 1, 1
,则可以在之前将Date
转换为LocalDate
:
LocalDate startLocalDate = startDate.toInstant()
.atZone(ZoneId.systemDefault())
.toLocalDate();