我有一个自定义对象列表,其中有String
字段来存储日期。
我需要编写一个过滤器来根据条件获取自定义对象列表:如果自定义对象日期和当前日期之间的天数等于4,则返回列表中的满意对象。
我尝试将自定义对象字符串日期解析为过滤器中的ZonedDateTime
。但它期待try
/ catch
阻止。如何处理这种情况?
代码:
list.stream().filter(ChronoUnit.DAYS.between(currDate,
ZonedDateTime.ofInstant((df.parse(stringdate).toInstant(),ZoneId.of("UTC"))) == 4)
答案 0 :(得分:0)
你可以在lambdas中使用try / catch:
list.stream().filter(stringdate -> {
try {
return ChronoUnit.DAYS.between(currDate,
ZonedDateTime.ofInstant(df.parse(stringdate).toInstant(),
ZoneId.of("UTC"))) == 4;
} catch (ParseException e) {
e.printStackTrace();
}
return false;
}).collect(...);
如果出现异常,您需要做什么,当然,此代码中的return false
会导致元素被过滤掉。您还可以使用另一种方法来执行从lambda调用的解析和异常处理。