[英]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
值超出01
到12
之間的范圍。
String
更改為Date
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.