当我这样编码时,我没有收到任何错误: -
import java.util.Date;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.concurrent.TimeUnit;
public class DateDifference{
public static void main(String[] main){
String str = "20121401092958";
/* TimeUnit spanInDays = */getDateDiff(str);
//System.out.println(spanInDays);
}
public static void getDateDiff(String str ){
DateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
Date currentDate = new Date();
Date givenDate = null;
Date d2 = null;
try{
givenDate = dateFormat.parse(str);
long diff = currentDate.getTime() - givenDate.getTime();
System.out.println("Days "+ TimeUnit.DAYS.convert(diff, TimeUnit.MILLISECONDS));
}catch(Exception e){
e.printStackTrace();
}
}
}
但是当我这样编码时: -
import java.util.Date;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.concurrent.TimeUnit;
public class DateDifference{
public static void main(String[] main){
String str = "20121401092958";
TimeUnit spanInDays = getDateDiff(str);
System.out.println(spanInDays);
}
public static TimeUnit getDateDiff(String str ){
DateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
Date currentDate = new Date();
Date givenDate = null;
Date d2 = null;
try{
givenDate = dateFormat.parse(str);
long diff = currentDate.getTime() - givenDate.getTime();
return TimeUnit.DAYS.convert(diff, TimeUnit.MILLISECONDS);
}catch(Exception e){
e.printStackTrace();
}
}
}
我收到编译错误
DateDifference.java:24: error: incompatible types: long cannot be converted to TimeUnit
return TimeUnit.DAYS.convert(diff, TimeUnit.MILLISECONDS);
^
1 error
如何解决这个问题?
答案 0 :(得分:4)
编译器说该方法的返回类型不符合预期;您将其声明为TimeUnit
,但您返回的值为long
。
由于这是有道理的(您要返回long
,而不是TimeUnit
的定义),您应该调整返回类型:
public static long getDateDiff(String str) {
答案 1 :(得分:3)
你的方法是
public static
TimeUnit
...
因此,您的方法必须返回类型TimeUnit
。你得到的回报是long
TimeUnit.Days.convert(diff, TimeUnit.MILLISECONDS)
类型为 long
只需更改返回类型或返回匹配的内容即可。
希望这有帮助。