关于TimeUnit Day转换的这个Java程序有什么问题?

时间:2015-05-20 15:08:59

标签: java

当我这样编码时,我没有收到任何错误: -

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

如何解决这个问题?

2 个答案:

答案 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

只需更改返回类型或返回匹配的内容即可。

希望这有帮助。