如何在GWT中检查正则表达式的时间戳?

以下Timestamp格式的正则表达式是什么

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.SZ 

哪里

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

我正在以字符串格式获取时间戳格式,因此要validation它。

如何检查GWT中的正则表达式?

只是简单的描述这样的模式:

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

任何试用真实的日期validation与正则表达式听起来本身就是错误的。

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

除了Datejs js以检查日期字符串的Datejs之外,Gwt还附带DateTimeFormat来解析日期字符串和格式日期,并支持locales。 如果解析的字符串与预期的格式不匹配, IllegalArgumentException引发IllegalArgumentException

 String dateStr = "2011-04-21 20:37:36.999 -0800"; String fmt = "yyyy-MM-dd HH:mm:ss.SZ"; // your 4th case: YYYY-MM-DD HH:mm:ss.SZ 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()); } 

您不要说格式字符串是固定的还是可以在执行validation之前在运行时提供。 因此,在第二种情况下,您需要使用replace将’Y’更改为’y’,将’AM / PM’更改为’a’,它们是DateTimeFormat使用的符号

我会说使用Datejs

否则,您将需要进行大量编码,并且正则表达式不是最好的validation时间戳以及它是否有效。 Datejs将检查日期的有效性,然后您将收到Date对象或null(如果它无效!)。

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

有关更多信息,请参阅

Datejs API文档

Datejs 格式规范