[英]How to check Regular Expression for Timestamp in 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.S Z
哪里
Y: year,
M: Month,
D: Date,
H: hour,
m: minute,
s: second,
S: Milisecond 3 digit only,
Z: Time zone.
我正在以字符串格式獲取時間戳格式,因此要驗證它。
如何檢查GWT中的正則表達式?
只是簡單地描述這種模式而已:
^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}\.\d{3}(?: [AP]M)?(?: [+-]\d{4})?$
因為使用正則表達式進行實際日期驗證的任何嘗試聽起來本質上都是錯誤的。
我將大寫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.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
使用的符號
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.