如何在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 格式规范