对于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();
现在我需要"期间" myCalendar
和myPeriod
。
谢谢。
答案 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