Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.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 - Fatal编程技术网

这个Java程序在时间单位日转换方面有什么问题?

这个Java程序在时间单位日转换方面有什么问题?,java,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 = "201

当我像这样编写代码时,不会出现错误:-

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();
           }
      }
  }
我发现编译错误

如何解决这个问题?

您的方法是

公共静态时间单位

因此,您的方法必须返回TimeUnit类型。你得到的回报是一个漫长的过程

TimeUnit.Days.convertdiff,TimeUnit.millizes是long类型

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


希望这有帮助。

编译器说方法的返回类型不是它所期望的;您将其声明为时间单位,但返回的是long类型的值

由于返回的是长时间而不是时间单位的定义,因此应该调整返回类型:

public static long getDateDiff(String str) {

我认为,^所指向的差异无法转换为时间单位,但我发现很难理解。
public static long getDateDiff(String str) {