Saa*_*aad 3 java datetime date simpledateformat
我有以下 Java 代码。
SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy");
String expiryDateInString = "05/14/86";
final Instant expiryDate = dateFormat.parse((expiryDateInString)).toInstant();
Run Code Online (Sandbox Code Playgroud)
我希望这会导致解析异常,但我得到的年份被解析为 0086,我相信这已经是过去的事了。我怎样才能使年份成为严格的 4 位数年份,而其他任何年份都会例外。
使用java.time而不是以前的日期 API,您可以使用DateTimeFormatter它,如果年份不正确,则会抛出异常
DateTimeFormatter.ofPattern("MM/dd/uuuu").parse(("05/14/86")
Run Code Online (Sandbox Code Playgroud)
线程“main”中的异常 java.time.format.DateTimeParseException:无法在索引 6 处解析文本“05/14/86”
DateTimeFormatter.ofPattern("MM/dd/uuuu").parse(("05/14/1986")
Run Code Online (Sandbox Code Playgroud)
1986年5月14日
在相反的情况下,如果您想同时允许 2 位数和 4 位数年份,则可以使用格式化程序的“可选”功能,使用[和]。提供年份的可能格式uuuu和uu可选块,您将拥有:
DateTimeFormatter.ofPattern("MM/dd/[uuuu][uu]").parse(("05/14/86")
Run Code Online (Sandbox Code Playgroud)
2086-05-14
DateTimeFormatter.ofPattern("MM/dd/[uuuu][uu]").parse(("05/14/1986")
Run Code Online (Sandbox Code Playgroud)
1986年5月14日
| 归档时间: |
|
| 查看次数: |
857 次 |
| 最近记录: |