本文介紹了使用SimpleDateFormat、Java進行的日期解析不正確的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我需要使用日期模式”yyyy-MM-dd”從輸入字符串分析日期,如果日期將以任何其他格式出現,則引發錯誤。
這是我解析日期的一段代碼:
private void validateDate() throws MyException {
Date parsedDate;
String DATE_FORMAT = "yyyy-MM-dd";
try{
parsedDate = new SimpleDateFormat(DATE_FORMAT).parse(getMyDate());
System.out.println(parsedDate);
} catch (ParseException e) {
throw new MyException("Error occurred while processing date:" + getMyDate());
}
}
當我在myDate中輸入”2011-06-12″這樣的字符串時,我會得到輸出”Tsinghua Sep 29 00:00:00 EEST 2011″,這很好。
當我發送了像”2011-0612″這樣的錯誤字符串時,我收到了預期的錯誤。
當我試圖傳遞一個仍然有兩個”連字符”但位數錯誤的字符串時,問題就開始了。
示例:
輸入字符串”2011-06-1211″
結果”EST 2014年9月23日00:00:00″。
輸入字符串”2011-1106-12″
結果”2月12日星期一00:00:00東部時間2103″。
我無法更改字符串日期的輸入格式。
如何避免?
推薦答案
您是否嘗試在SimpleDateFormat
上呼叫setLenient(false)
?
import java.util.*;
import java.text.*;
public class Test {
public static void main(String[] args) throws Exception {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
format.setLenient(false);
Date date = format.parse("2011-06-1211"); // Throws...
System.out.println(date);
}
}
請注意,我還建議您設置SimpleDateFormat
的時區和區域設置。(或者,使用Joda Time…)
這篇關于使用SimpleDateFormat、Java進行的日期解析不正確的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,