首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何验证Java 8日期?

如何验证Java 8日期?
EN

Stack Overflow用户
提问于 2018-09-27 05:29:01
回答 2查看 0关注 0票数 0

我想验证几种日期格式,如下例所示:

YYYY
YYYY-MM
YYYY-MM-DD

验证必须确保日期格式正确且日期存在。

我知道Java 8提供了一个新的Date API,所以我想知道它是否能够完成这样的工作。

有没有更好的方法使用Java 8 date API?将Calendar类与lenient参数一起使用仍然是一个好习惯吗?

EN

回答 2

Stack Overflow用户

发布于 2018-09-27 14:14:09

可以指定缺少的字段parseDefaulting以使所有格式化工具正常工作:

public static boolean isValid(String input) {
    DateTimeFormatter[] formatters = {
            new DateTimeFormatterBuilder().appendPattern("yyyy")
                    .parseDefaulting(ChronoField.MONTH_OF_YEAR, 1)
                    .parseDefaulting(ChronoField.DAY_OF_MONTH, 1)
                    .toFormatter(),
            new DateTimeFormatterBuilder().appendPattern("yyyy-MM")
                    .parseDefaulting(ChronoField.DAY_OF_MONTH, 1)
                    .toFormatter(),
            new DateTimeFormatterBuilder().appendPattern("yyyy-MM-dd")
                    .parseStrict().toFormatter() };
    for(DateTimeFormatter formatter : formatters) {
        try {
            LocalDate.parse(input, formatter);
            return true;
        } catch (DateTimeParseException e) {
        }
    }
    return false;
}
票数 0
EN

Stack Overflow用户

发布于 2018-09-27 14:40:12

可以这样试试

public static final boolean validateInputDate(final String isoDate)
{
    String[] dateProperties = isoDate.split("-");

    if(dateProperties != null)
    {
        int year = Integer.parseInt(dateProperties[0]);

        // A valid month by default in the case it is not provided.
        int month = dateProperties.length > 1 ? Integer.parseInt(dateProperties[1]) : 1;

        // A valid day by default in the case it is not provided.
        int day = dateProperties.length > 2 ? Integer.parseInt(dateProperties[2]) : 1;

        try
        {
            LocalDate.of(year, month, day);
            return true;
        }
        catch(DateTimeException e)
        {
            return false;
        }
    }

    return false;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100002770

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档