2011-08-11 68 views
0

我想拒絕從日期格式HH解析(通過SimpleDateFormat :: parse)的「18:00」。有沒有辦法讓這個沒有額外的代碼發生?日期格式是否接受$ /正則表達式?我已經啓用setLenient爲false,並且18:00仍然通過HH日期格式。SimpleDateFormat解析和ambigious日期格式

我知道我可以進行其他比較字符串被解析,但我正在尋找一種方法在DateFormat字符串中這樣做。

+1

你不能用'HH'來做到這一點,但你可以用'hh'來做到這一點(我假設你希望人們只在這裏輸入小時1 - 12 ...)。 –

回答

1

不,SDF不允許「規則」。它只是根據模式解析和格式化日期,而不是正則表達式模式,所以沒有正則表達式。

0
  1. 的SimpleDateFormat確實執行了一種驗證 - 它會拋出,如果你試圖解析一個字符串,並不意味着指定格式(雖然的Javadoc crpytic大約只有當拋出異常一個ParseException開始不符合格式(http://download.oracle.com/javase/1.4.2/docs/api/java/text/DateFormat.html#parse(java.lang.String)))。

  2. 如果日期格式僅爲「HH」,則字符串「18:00」符合該格式。如果日期格式爲「HH:MMM」(2位小時,後跟3個字母月),那麼應該可能會拋出一個ParseException。

如果你想這樣驗證,那麼我建議使用正則表達式,或者甚至只是使用Java代碼。我不確定你想要達到什麼,所以我不能進一步建議我害怕。