如何在 Java 中健全地检查日期

新手上路,请多包涵

我觉得奇怪的是,在 Java 中创建 Date 对象的最明显方法已被弃用,并且似乎已被不那么明显的使用宽松日历“取代”。

您如何检查以日、月和年的组合形式给出的日期是否为有效日期?

例如,2008-02-31(如 yyyy-mm-dd)将是无效日期。

原文由 Bloodboiler 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 654
2 个回答

当前的方法是使用日历类。它具有 setLenient 方法,该方法将验证日期并在超出范围时抛出异常,如您的示例所示。

忘了补充:如果您获得日历实例并使用您的日期设置时间,这就是您获得验证的方式。

 Calendar cal = Calendar.getInstance();
cal.setLenient(false);
cal.setTime(yourDate);
try {
    cal.getTime();
}
catch (Exception e) {
  System.out.println("Invalid date");
}

原文由 AdamC 发布,翻译遵循 CC BY-SA 3.0 许可协议

关键是 df.setLenient(false); .这对于简单的情况来说绰绰有余。如果您正在寻找更强大的(我怀疑)和/或像 joda-time 这样的替代库,那么请查看 用户“tardate”的答案

final static String DATE_FORMAT = "dd-MM-yyyy";

public static boolean isDateValid(String date)
{
        try {
            DateFormat df = new SimpleDateFormat(DATE_FORMAT);
            df.setLenient(false);
            df.parse(date);
            return true;
        } catch (ParseException e) {
            return false;
        }
}

原文由 Aravind Yarram 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题