【问题标题】:How to check correct date format pattern? [duplicate]如何检查正确的日期格式模式? [复制]
【发布时间】:2015-08-11 00:31:01
【问题描述】:

我面临与日期格式模式相关的问题。假设用户给出了这样的错误输入'200000-05-16',而我的格式是这样的mm/dd/yyyy。我想检查java类中的格式输入日期错误。

在java中怎么做?

【问题讨论】:

  • 也许您可以尝试解析输入字符串并获取异常?
  • 请注意,mm 表示 分钟。你的意思是MM/dd/yyyyMM 表示月份。

标签: java date format


【解决方案1】:

这里有两个解决方案。我推荐第二个(mkyong 教程)。

解决方案 1(正则表达式)

String datePattern = "\\d{2}-\\d{2}-\\d{4}";

String date1 = "200000-05-16";
String date2 = "05-16-2000";

Boolean isDate1 = date1.matches(datePattern);
Boolean isDate2 = date2.matches(datePattern);

System.out.println(isDate1);
System.out.println(isDate2);

输出:

false
true

该模式不是更好的模式,因为您可以将“99”作为一个月或一天传递,这样就可以了。请检查这篇文章以获得良好的模式:Regex to validate date format dd/mm/yyyy

解决方案 2(SimpleDateFormat)

此解决方案采用 SimpleDateFormat 来检查它是否有效。 请查看此链接以获得完整且出色的解决方案:http://www.mkyong.com/java/how-to-check-if-date-is-valid-in-java/

【讨论】:

    【解决方案2】:
    import java.text.SimpleDateFormat;
    import java.text.ParseException;
    import java.util.Date;
    
    public class TestDate {
    
        public static boolean isValid(String value) {
            try {
                new SimpleDateFormat("dd/mm/yyyy").parse(value);
                return true;
            } catch (ParseException e) {
                return false;
            }
        }
    }
    

    【讨论】:

    • dd.MM.yyyy 解析 10.10.08 返回 10.10.0008 / 没有 ParseException
    • 2020-06-163 也正确解析。
    【解决方案3】:

    尝试解析它,如果失败 - 格式不正确。

    请记住,SimpleDateFormat 不是线程安全的,因此不要重用来自多个线程的实例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-07
      • 1970-01-01
      • 1970-01-01
      • 2018-01-17
      • 2013-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多