簡體   English   中英

如何在GWT中檢查時間戳的正則表達式?

[英]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使用的符號

我會說使用Datejs

否則,您將需要進行大量編碼,並且正則表達式不是最好的驗證時間戳以及它是否有效。 Datejs將檢查日期有效性,並從中您將收到Date對象或null(如果它無效!)。

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

有關更多信息,請參閱

Datejs API文檔

Datejs 格式規范

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM