![](/img/trans.png)
[英]SimpleDateFormat.parse(date_string) generate a previous date
[英]Why does SimpleDateFormat.parse accept an invalid date string?
我有一個java代碼,以特定格式輸入日期。
static Date parseDate(String userInput){
DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = null;
try {
date = format.parse(userInput);
System.out.println(date);
}catch(ParseException pe){
date=null;
System.out.println("Not a valid date");
}
return date;
}
現在我進入2015-13-11 89:90:90
,這是一個無效的日期。 但它將Thu Jan 14 18:31:30 IST 2016
作為日期返回。 為什么會這樣? 如何讓它作為日期返回null?
從javadocs的一瞥中,它似乎使用了一種lenient
的解析模式,它接受格式不佳的輸入:
添加此行
format.setLenient(false);
初始化DateFormat對象后出現修復它。
我將試圖解釋為什么會這樣。
日期不同,因為超出其字段最大值的值將匯總到下一個更大的字段中。
我不確定它的解決順序,但這是一般情況:
鑒於2015-13-11 89:90:90
這讓我們留下2016-01-14 18:31:30。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.