我正在尝试使用简单的数据格式验证日期,它会解析奇怪的日期。
val dateFormat = new SimpleDateFormat("dd MMM, yyyy")
dateFormat.setLenient(false)
dateFormat.parse("01 Jan, 2k11")
1 月 1 日星期日 00:00:00 IST 2
快时间:-62104253400000
c日期:公元 2-01-01T00:00:00.000+0530
最佳答案
我开始挖掘 SimpleDateFormat
的源代码,并阅读足够的内容来收集这里似乎发生的事情。发生的情况是,您的年份组件 2k11
被解释为两位数年份(实际上是一位数字,2
),并且后面的所有内容都被忽略,因为不属于其中的日期模式。考虑以下产生相同结果的代码:
DateFormat dateFormat = new SimpleDateFormat("dd MMM, yyyy");
dateFormat.setLenient(false);
Date blah = dateFormat.parse("01 Jan, 2 Jon Skeet");
System.out.println(blah);
打印:
Sun Jan 01 00:00:00 CET 2
如您所见,解释的年份是 2,并且 Jon Skeet
简介被忽略。要准确了解 为什么 SimpleDateFormat
这样做,请阅读源代码。
关于java - 简单的日期格式解析 2k11 类似的值,应该抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57005168/