我觉得奇怪的是,在 Java 中创建 Date
对象的最明显方法已被弃用,并且似乎已被不那么明显的使用宽松日历“取代”。
您如何检查以日、月和年的组合形式给出的日期是否为有效日期?
例如,2008-02-31(如 yyyy-mm-dd)将是无效日期。
原文由 Bloodboiler 发布,翻译遵循 CC BY-SA 4.0 许可协议
我觉得奇怪的是,在 Java 中创建 Date
对象的最明显方法已被弃用,并且似乎已被不那么明显的使用宽松日历“取代”。
您如何检查以日、月和年的组合形式给出的日期是否为有效日期?
例如,2008-02-31(如 yyyy-mm-dd)将是无效日期。
原文由 Bloodboiler 发布,翻译遵循 CC BY-SA 4.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 许可协议
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4.1k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
3 回答1.7k 阅读✓ 已解决
当前的方法是使用日历类。它具有 setLenient 方法,该方法将验证日期并在超出范围时抛出异常,如您的示例所示。
忘了补充:如果您获得日历实例并使用您的日期设置时间,这就是您获得验证的方式。