簡體   English   中英

將字符串轉換為java.util.date

[英]Converting string to java.util.date

我正在嘗試在java.util.date中轉換字符串,但是出現以下錯誤:

 HelloWorld.java:10: error: incompatible types: Date cannot be converted to    String                                                                                                                                                                       
        return FORMATTER.parse(date);                                                                                                                                                                                                               
                              ^                                                                                                                                                                                                                     
 HelloWorld.java:16: error: incompatible types: String cannot be converted to Date                                                                                                                                                                       
    Date date = convertStringToDate("2015-08-03 09:19:00.000");    

我的代碼如下:

import java.text.SimpleDateFormat;
import java.util.Date;

public class HelloWorld{

private static final SimpleDateFormat FORMATTER = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");

 public static String convertStringToDate(String date) {
    if(date!=null){
        return FORMATTER.parse(date);
    }
    return null;
}

 public static void main(String []args){
    Date date = convertStringToDate("2015-08-03 09:19:00.000");
    System.out.println(date);
 }
}

將方法簽名更改為此:

public static Date convertStringToDate(String date)

SimpleDateFormat.parse返回Date ,而不是String

另外,您還需要處理parse方法可能拋出的檢查過的ParseException ,方法是在簽名中聲明throws ParseException (並在main處理異常),或者將異常包裝到RuntimeException (有效的輸入是在輸入錯誤時終止程序)給定):

public static Date convertStringToDate(String date) {
    if (date != null) {
        try {
            return FORMATTER.parse(date);
        } catch (ParseException e) {
            // nothing we can do if the input is invalid
            throw new RuntimeException(e);
        }
    }
    return null;
}

最后,您應該注意,您只能使用當前格式( yyyy-MM-dd hh:mm:ss )解析1到12之間的小時值。 如果要根據24小時制進行分析,則應將HH模式用於小時部分:

private static final DateFormat FORMATTER = new SimpleDateFormat(
                                                "yyyy-MM-dd HH:mm:ss");

您指定的格式與數據格式不匹配。

格式"yyyy-MM-dd hh:mm:ss"與數據"2015-08-03 09:19:00.000"不兼容,原因有兩個:(1)AM / PM缺少日期,因為“ hh”需要1-12小時,以及日期字符串中存在的(2)毫秒

替換下面提到的行,您的問題將得到解決。

private static final SimpleDateFormat FORMATTER = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");

但是,上述問題均不會導致您收到異常,因為默認情況下會忽略毫秒。

異常的可能原因是方法“ convertStringToDate”的返回類型或hh值超出0112之間的范圍。

  1. 將返回類型從String更改為Date
  2. 將日期格式hh更改為HH

這是因為您試圖從您的方法中返回一個String 將其更改為Date

public static Date convertStringToDate(String date) {
    if(date!=null){
        return FORMATTER.parse(date);
    }
    return null;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM