日历之间的Java期间

时间:2017-10-17 10:00:53

标签: java mysql period

对于Java程序,我需要一个2个日期的时间段,但我得到了Period.Class的错误。

我尝试使用Period.between

获取TimePeriod
     Calendar myCalendar = new GregorianCalendar(2017, Calendar.JANUARY,1);
     Calendar myPeriod = new GregorianCalendar(2017, Calendar.MARCH, 1);
     Period prd = Period.between(myCalendar, myPeriod);
     return prd.getTime();

我曾经回归myCalendar.getTime(); 现在我需要"期间" myCalendarmyPeriod

谢谢。

1 个答案:

答案 0 :(得分:2)

如果您使用的是Java 8,则Period会接受2 LocalDate个参数(请在official documentation中详细了解)。

如果您仍需要从Calendar转换为LocalDate,则此代码为:

Calendar myCalendar = new GregorianCalendar(2017, Calendar.JANUARY,1);
Calendar myPeriod = new GregorianCalendar(2017, Calendar.MARCH, 1);
LocalDate start = Instant.ofEpochMilli(myCalendar.getTimeInMillis()).atZone(ZoneId.systemDefault()).toLocalDate();
LocalDate end = Instant.ofEpochMilli(myPeriod.getTimeInMillis()).atZone(ZoneId.systemDefault()).toLocalDate();

否则,只需直接创建2个LocalDate变量:

 LocalDate start = LocalDate.of(2017, Month.JANUARY, 1);
 LocalDate end = LocalDate.of(2017, Month.MARCH, 1);

然后计算它们之间的时间段:

Period prd = Period.between(start, end);
System.out.println(prd.toString()); //P2M