我试图使用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/

10-13 08:46