日期的流过滤器

时间:2017-10-23 11:05:40

标签: datetime java-8 java-stream java-time

我有一个自定义对象列表,其中有String字段来存储日期。

我需要编写一个过滤器来根据条件获取自定义对象列表:如果自定义对象日期和当前日期之间的天数等于4,则返回列表中的满意对象。

我尝试将自定义对象字符串日期解析为过滤器中的ZonedDateTime。但它期待try / catch阻止。如何处理这种情况?

代码:

list.stream().filter(ChronoUnit.DAYS.between(currDate,
    ZonedDateTime.ofInstant((df.parse(stringdate).toInstant(),ZoneId.of("UTC"))) == 4)

1 个答案:

答案 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调用的解析和异常处理。

相关问题