[英]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位年份,可以使用[
和]
使用格式化程序的“可选”功能。 在可选块中提供年份uuuu
和uu
可能格式,您将拥有:
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.