繁体   English   中英

年份不是四位数时的日期解析异常

[英]Date parse exception when year is not four digits

我在Java中有以下代码。

SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy");
String expiryDateInString = "05/14/86";

final Instant expiryDate = dateFormat.parse((expiryDateInString)).toInstant();

我希望这会导致一个解析异常,但我得到一年解析为0086,我相信这是过去的方式。 我怎样才能使这一年成为严格的4位数年份,其他任何事情都会例外。

使用java.time而不是之前的日期API,您可以使用DateTimeFormatter ,如果它不是正确的年份将抛出异常

DateTimeFormatter.ofPattern("MM/dd/uuuu").parse(("05/14/86")

线程“main”中的异常java.time.format.DateTimeParseException:无法在索引6处解析文本'05 / 14/86'

DateTimeFormatter.ofPattern("MM/dd/uuuu").parse(("05/14/1986")

1986年5月14日

在相反的情况下,如果要同时允许2位和4位年份,可以使用[]使用格式化程序的“可选”功能。 在可选块中提供年份uuuuuu可能格式,您将拥有:

DateTimeFormatter.ofPattern("MM/dd/[uuuu][uu]").parse(("05/14/86")

2086年5月14日

DateTimeFormatter.ofPattern("MM/dd/[uuuu][uu]").parse(("05/14/1986")

1986年5月14日

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM