【发布时间】:2018-05-16 05:08:40
【问题描述】:
我在 Java 中有以下代码。
SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy");
String expiryDateInString = "05/14/86";
final Instant expiryDate = dateFormat.parse((expiryDateInString)).toInstant();
我希望这会导致解析异常,但我将一年解析为 0086,我相信这是过去的方式。我怎样才能使年份成为严格的 4 位数年份,其他任何事情都会例外。
【问题讨论】:
-
我相信这是过去式。 - 你为什么这么认为?
-
当你使用这个 SimpleDateFormat("MM/dd/yyyy");然后是 4 位数的年份,对于 2 位数,使用 SimpleDateFormat("MM/dd/yy");
-
如果是 2 位数字或年份小于 4 位数字年份。我想要一个解析异常。
-
您应该使用
SimpleDateFormatter的时间已经过去了。 :-) 那个类现在已经过时了,而且也是出了名的麻烦。而且我不知道有什么方法可以说服它按照你的意愿行事。无论如何,今天我们在java.time, the modern Java date and time API 和它的DateTimeFormatter中做得更好。见AxelH’s good answer。
标签: java date datetime simpledateformat