我试图使用SimpleDateFormat
解析某些日期字符串,并且我注意到了这一荒谬的事件。
SimpleDateFormat sdf = new SimpleDateFormat("d-M-yyyy");
Date d = sdf.parse("3-50-2014");
它没有给我一个错误,而是通常返回'3-2-2018'...这怎么可能?如何避免这种情况?
最佳答案
这是因为SimpleDateFormat
处于宽松模式:它宽容了一些“小”问题,例如将月份设置得过高,而调整年份。例如,在您的情况下,它将额外的48个月解释为四年。
调用sdf.setLenient(false)
将解决此问题。
Demo.
关于java - Java的'3-50-2014'是'3-2-2018'吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25829067/