Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java日历之间的周期_Java_Mysql_Period - Fatal编程技术网

Java日历之间的周期

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

对于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(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是如何工作的。