我想我只是期望这给我一个解析异常,但它没有。如果日期无效,我希望解析失败。 (那是我需要知道的)
补充说明:使用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]
答案 0 :(得分:2)
一只小鸟告诉我尝试使用withResolverStyle()
设置为STRICT
。有了这个,我需要做的唯一其他技巧是合并era into my year。所以上面的变化是:
String ldtfPattern = "uuuu/MM/dd HH:mm";
和
zdt = ZonedDateTime.parse(str,
getLocalDateTimeFormatter().withZone(ZONE_ID).withResolverStyle(ResolverStyle.STRICT));
这对我有用。