【问题标题】:How to check Regular Expression for Timestamp in GWT?如何在 GWT 中检查时间戳的正则表达式?
【发布时间】:2013-02-02 13:56:11
【问题描述】:

以下时间戳格式的正则表达式是什么

YYYY-MM-DD HH:mm:ss.S

YYYY-MM-DD HH:mm:ss.S AM/PM

YYYY-MM-DD HH:mm:ss.S AM/PM Z

YYYY-MM-DD HH:mm:ss.S Z

在哪里

Y: year, 
M: Month,
D: Date,
H: hour,
m: minute,
s: second,
S: Milisecond 3 digit only,
Z: Time zone.

我正在获取字符串格式的时间戳格式,所以想要验证它。

如何在 GWT 中检查上述正则表达式?

【问题讨论】:

    标签: java regex gwt


    【解决方案1】:

    只是一些简单的事情,只描述这样的模式:

    ^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}\.\d{3}(?: [AP]M)?(?: [+-]\d{4})?$
    

    因为任何使用正则表达式验证真实日期的尝试听起来都是错误的。

    我将大写 Z 作为 RFC822 时区,正则表达式需要更改以符合 TZD 或一般文本时区。

    【讨论】:

    • ^\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}\ \.\\d{3}(?: [AP]M)?(?: [+-]\\d{4})?$ 对吗?
    【解决方案2】:

    除了Datejs 依靠 js 来检查日期字符串,Gwt 附带了DateTimeFormat 来解析日期字符串和格式化日期并支持语言环境。在解析的字符串与预期格式不匹配的情况下,它会引发IllegalArgumentException

    String dateStr = "2011-04-21 20:37:36.999 -0800";
    String fmt = "yyyy-MM-dd HH:mm:ss.S Z"; // your 4th case: YYYY-MM-DD HH:mm:ss.S Z
    DateTimeFormat format = DateTimeFormat.getFormat(fmt);
    try {
      Date date = format.parse(dateStr);
      System.out.println("Validated: " + date);
    } catch (IllegalArgumentException e) {
      System.out.println("Validation error: " + e.getMessage());
    }
    
    dateStr = "2011-04-21 08:37:36.999 PM -0800"; // your 3rd case YYYY-MM-DD HH:mm:ss.S AM/PM Z
    fmt = "yyyy-MM-dd hh:mm:ss.S a Z";
    format = DateTimeFormat.getFormat(fmt);
    try {
      Date date = format.parse(dateStr);
      System.out.println("Validated: " + date);
    } catch (IllegalArgumentException e) {
      System.out.println("Validation error: " + e.getMessage());
    }
    

    您没有说格式字符串是固定的还是可以在执行验证之前在运行时提供。所以在第二种情况下,您需要使用replace 将'Y' 更改为'y',并将'AM/PM' 更改为'a',这是DateTimeFormat 中使用的符号

    【讨论】:

      【解决方案3】:

      我会说使用Datejs

      否则您将需要进行大量编码,而正则表达式不是验证时间戳及其是否有效的最佳选择。 Datejs 将检查日期的有效性,然后您将收到一个 Date 对象或 null(如果它无效!)。

      Date.parse("2013-02-02 12:01:01.000", "yyyy-MM-dd HH:mm:ss.u");

      有关详细信息,请参阅:

      日期jsAPI documentation

      日期jsFormat spec

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-12-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-01
        • 1970-01-01
        相关资源
        最近更新 更多