我正在使用
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,我会以获得误差,而不是解析方法返回日期2013年3月12日(2013年12月3日)。 我正在wronging?
设置宽大位 :
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)
笔记
- 当有关Java类疑问,阅读类的文档应该是你的第一步。 我不知道回答你的问题,我只是谷歌搜索类,点击解析方法链接,并指出, 另请参见部分。 你应该总是先搜索,并注明您的发现的问题
- 从宽日期有一个体面的历史绕过审查和激发孩子们的想象力 。
文章来源: SimpleDateFormat and parsing: parse doesn't fail with wrong input string date