首页 > 解决方案 > 我想编写一个代码来使用 java 验证不同类型的日期,但是带有 T 和 Z 的日期仍然显示 Invalid

问题描述

这是我写的代码

如果有人曾经尝试过这样的事情,请建议我。

private static final String[] Date_Reg_Ex = {
        "yyyy-MM", "yyyy-MM-dd", "dd-MMMM-yyyy", "dd-MM-yyyy", "MM-dd-yyyy", "dd-MM-yyyy HH:mm:ss/SSS",
        "yyyy-MM-dd HH:mm", "yyyy-mm-dd'T'HH:MM:ss", "yyyy-MM-dd'T'HH:mm:ss.SSS",
        "yyyy-MM-dd HH:mm:ss.SSS", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm:ss.S", "yyyy-MM-dd'@'HH:mm:ss",
        "yyyy-MM-dd'/'K:mm a", "MM-dd-yyyy hh:mm a", "MM-dd-yyyy hh:mm:ss a", "hh:mm:ss MMM d, yyyy z",
        "EEEE dd/MM/yyyy", "EEE, dd MMM yyyy HH:mm:ss zzz", "EEE MMM dd hh:mm:ss z yyyy", "dd MMMMM yyyy",
        "MM/dd/yyyy HH:mm", "MM/YYYY", "MM/YY", "dd/MM/yyyy", "yyyy/MM/dd", "MMM, dd/yyyy", "dd.MM.yyyy", "MMM. dd",
        "yyyy", "yyyyMMdd", "MMddyyyy", "MMMM yyyy", "ddMMyyyyHHmmss", "yyyy"
};

public static boolean isValidDate(String value, TimeZone timeZone) {
    DateValidator dateValidator = DateValidator.getInstance();
    for (String dateRegEx : Date_Reg_Ex) {
        if (dateValidator.isValid(value, dateRegEx)) {
            return true;
        }
    }
    return false;
}

标签: java

解决方案


既然您写了“带有 T 和 Z 的日期仍然显示无效”,我想您的意思是:

  1. “yyyy-mm-dd'T'HH:MM:ss”
  2. “yyyy-MM-dd'T'HH:mm:ss.SSS”

  1. “hh:mm:ss MMM d, yyyy z”
  2. “EEE,dd MMM yyyy HH:mm:ss zzz”
  3. “EEE MMM dd hh:mm:ss z yyyy”

我找不到 2、3、4 和 5 的任何问题。但日期 1 会切换月份和分钟,我猜这不是有意的。

以下是对我有用的日期示例:

  1. “yyyy- MM -dd'T'HH: mm :ss” -> “2019-09-12T13:21:31”
  2. “yyyy-MM-dd'T'HH:mm:ss.SSS”->“2019-09-12T13:21:31.020”
  3. “hh:mm:ss MMM d, yyyy z”->“太平洋标准时间 2019 年 9 月 12 日 1:21:31”
  4. “EEE,dd MMM yyyy HH:mm:ss zzz”->“2019 年 9 月 12 日星期四 13:21:31 PST”
  5. “EEE MMM dd hh:mm:ss z yyyy”->“2019 年 9 月 12 日星期四 1:21:31 PST”

推荐阅读