Java 为什么我可以解析;2015-18-32“;用SimpleDataFormat?
我试图回答一个问题,我准备了一个小示例,希望在代码运行后提供一些成功和错误消息: 代码Java 为什么我可以解析;2015-18-32“;用SimpleDataFormat?,java,simpledateformat,date-formatting,Java,Simpledateformat,Date Formatting,我试图回答一个问题,我准备了一个小示例,希望在代码运行后提供一些成功和错误消息: 代码 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); // correct format in string but totally wrong data for a date. String curDate = "2015-18-32"; Date parsedDate = null; try { parsedDate = for
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
// correct format in string but totally wrong data for a date.
String curDate = "2015-18-32";
Date parsedDate = null;
try {
parsedDate = format.parse(curDate);
} catch (ParseException e) {}
System.out.println(parsedDate);
输出
2016年7月2日星期六00:00:00 CEST
我知道结果日期仅为有效日期(2015-12-31),加上6个月零1天,但这对我来说并不正确。我是否误解了简化格式
- 这段代码不应该给出异常或错误吗
另请参见下面关于
java.util.Calendar
Lenence的评论 IIRCSimpleDataFormat
默认情况下是宽松的,即它只是滚动并添加额外的天数和月份。它是使用启发式的宽松解析:。此功能可以通过df.setLenient(false)
关闭。请参见。只是想知道:您之前做了多少研究?更严格地说,基础日历实例是一个lenient:“Calendar有两种模式用于解释日历字段,宽松和非宽松。当日历处于宽松模式时,它接受的日历字段值的范围比它产生的范围更广。当日历重新计算get()返回的日历字段值时,所有日历字段都将被规范化。例如,宽大的GregorianCalendar将月份==1月,月中日==32解释为2月1日。“@jwenting谢谢,为你的评论添加了参考。@jwenting和Mena,谢谢,我必须翻译你的答案才能理解lenient…:S,我的问题是英语,没有误解代码…)@JordiCastillalenitivo
?放纵
?或放纵
?:)我知道放纵是的,因为放纵e在西班牙语中也是一个词…但lenitivo或类似的词在本例中不存在…该词在西班牙语中没有此含义…请检查