[英]SimpleDateFormat and parsing: parse doesn't fail with wrong input string date
我正在使用
java.util.Date date;
SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
try {
date = sdf.parse(inputString);
} catch (ParseException e) {
e.printStackTrace();
}
其中inputString
是dd/MM/yyyy
格式的字符串。
例如,如果inputString
是40/02/2013,我將獲得一個錯誤,而parse方法將返回Date 2013年3月12日(2013年3月12日)。 我錯了什么?
設置寬松位 :
public void setLenient(boolean lenient)
指定日期/時間解析是否寬松。 通過寬松的解析,解析器可以使用啟發式來解釋與該對象的格式不完全匹配的輸入。 通過嚴格的解析,輸入必須與此對象的格式匹配。
以下代碼:
import java.text.ParseException;
import java.text.SimpleDateFormat;
public class Tester {
public static void main(String[] argv) {
java.util.Date date;
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
// Lenient
try {
date = sdf.parse("40/02/2013");
System.out.println("Lenient date is : "+date);
} catch (ParseException e) {
e.printStackTrace();
}
// Rigorous
sdf.setLenient(false);
try {
date = sdf.parse("40/02/2013");
System.out.println("Rigorous date (won't be printed!): "+date);
} catch (ParseException e) {
e.printStackTrace();
}
}
}
得到:
Lenient date is : Tue Mar 12 00:00:00 IST 2013
java.text.ParseException: Unparseable date: "40/02/2013"
at java.text.DateFormat.parse(DateFormat.java:357)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.