ZonedDateTime:我希望parse()在无效日期失败



我想我只是希望这会给我一个解析异常,但事实并非如此。如果日期无效,我希望解析失败。(这是我需要知道的)

添加注释:使用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]

一只小鸟告诉我尝试使用设置为STRICTwithResolverStyle()。有了这些,我唯一需要的另一个技巧就是把这个时代融入我的一年。所以上面的变化是:

String ldtfPattern = "uuuu/MM/dd HH:mm";

zdt = ZonedDateTime.parse(str, 
                getLocalDateTimeFormatter().withZone(ZONE_ID).withResolverStyle(ResolverStyle.STRICT));

这对我很有效。

相关内容

  • 没有找到相关文章

最新更新