【发布时间】:2016-08-03 04:11:40
【问题描述】:
我想我只是希望这会给我一个解析异常,但它没有。如果日期无效,我希望解析失败。 (这就是我需要知道的)
添加说明:使用 2 月 30 日作为无效日期:(实际上,我需要做的是接收五个字符串;年、月、日、小时、分钟,我将它们组装成 str(下)和看看它们是否作为一个有效的日期时间组合在一起(ZONE_ID)。
String ZONE_NAME = "America/Los_Angeles";
ZoneId ZONE_ID = ZoneId.of(ZONE_NAME);
String ldtfPattern = "yyyy/MM/dd HH:mm";
DateTimeFormatter localDateTimeFormatter =
DateTimeFormatter.ofPattern(ldtfPattern);
String str = "2016/02/30 21:09";
try {
zdt = ZonedDateTime.parse(str, localDateTimeFormatter().withZone(ZONE_ID));
} catch(DateTimeParseException e) {
return null;
}
return zdt;
上面解析后zdt的字符串值为
2016-02-29T21:09-08:00[America/Los_Angeles]
【问题讨论】:
-
您那里的
str与格式匹配,因此不会引发异常。如果你把它改成没有的东西(比如"2016-02-30 21:09"),你确实会得到一个DateTimeParseException。 -
@Mureinik 我为此被否决了?现在是 2 月 30 日,这是无效的,我希望它失败。或者我想知道。
-
哦,好点子! Downvote 已删除,但我建议将其编辑到问题中以突出显示它。
-
@Mureinik,好的。我添加了一个注释段落来澄清我对“无效”的想法。