Java日历之间的周期
对于Java程序,我需要2个日期的时间段,但Period.Class会出错 我试图用Period.between获取时间段Java日历之间的周期,java,mysql,period,Java,Mysql,Period,对于Java程序,我需要2个日期的时间段,但Period.Class会出错 我试图用Period.between获取时间段 Calendar myCalendar = new GregorianCalendar(2017, Calendar.JANUARY,1); Calendar myPeriod = new GregorianCalendar(2017, Calendar.MARCH, 1); Period prd = Period.between(myCale
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
的“期间”
谢谢。如果您使用的是Java 8,句点
接受2个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
你会犯什么错误?方法between
的签名表明它需要LocalDates,而不是Calendar类型周期中的方法between(LocalDate,LocalDate)不适用于between和方法getTime()中错误的参数(Calendar,Calendar)未为上的类型句点定义。GetTime您可以读取或使用LocalDate的其他工厂方法。@DavidKhano编译器声明,between()
需要类型为LocalDate
的参数,而不是Calendar
。另外,Period
class@DavidKhano中没有getTime()
方法。请理解Period是如何工作的。