java - Java 简单日期格式的问题

标签 java datetime simpledateformat

我正在开发一个项目,需要根据长度和模式验证多个日期。我使用简单的日期格式并发现了很多问题。我的要求是严格允许日期字符串匹配“yyyy/MM/dd”并且严格允许10个字符。

下面的代码没有给出各种测试输入字符串的预期结果。

public static boolean checkformat(String dateString){
        boolean flag = false;
        Date d1 = null;
        SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd");
        format.setLenient(false);
        try {
            d1 = format.parse(dateString);
            flag=true;
        } catch (ParseException ex) {
            ex.printStackTrace();
            return false;
        }
        return flag;
    }

上面的代码对于各种输入返回“true”,例如“99/03/1”(应该是0099/03/01)和99/1/1(应该是0099/01/1)。由于输入字符串不是来自 from,因此我无法在将它们传递给此方法之前执行验证。请建议任何对日期格式非常严格的实现(“yyyy/MM/dd”)。

最佳答案

我建议您在格式化日期之前尝试使用正则表达式验证日期。

用户使用下面的代码进行验证

public static boolean checkformat(String dateString){
        boolean flag = false;
        Date d1 = null;
        SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd");
        format.setLenient(false);
        try {
             if (dateString.matches("([0-9]{4})/([0-9]{2})/([0-9]{2})")) { // use this regex
               d1 = format.parse(dateString);
               flag=true;
             }
        } catch (ParseException ex) {
            ex.printStackTrace();
            return false;
        }
        return flag;
    }

关于java - Java 简单日期格式的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35376823/

相关文章:

python - PySpark 不会转换时间戳

java - 为什么格式化日期是上个世纪

java.text.ParseException : Unparseable date : "..."

java - 单击图像的一部分即可找到匹配的图像

java - 使用 javafx SimpleMapProperty 时出现 UnsupportedOperationException

c# - DateTime 到字符串,在保留文化的同时将换行符格式化为字符串

PHP 比较 DateTimeZone 对象

java - 如何填写类(class)中的所有字段?

java - jMenuItem.addMouseListener(this) 上的错误

c# - DateTime.Month.ToString(“MMM”)无法正常工作