本文介紹了Java DateFormat.parse認為第112街100號是日期(&Q)的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我使用這里包含的代碼來確定給定值是否為有效日期。在一個特定案例中,它評估以下街道地址:
第112大道100號
顯然不是日期,但Java將其解釋為:
美國東部標準時間12:00:00:00
有問題的代碼:
String DATE_FORMAT = "yyyyMMdd";
try {
DateFormat dfyyyyMMdd = new SimpleDateFormat(DATE_FORMAT);
dfyyyyMMdd.setLenient(false);
Date formattedDate;
formattedDate = dfyyyyMMdd.parse(aValue);
console.debug(String.format("%s = %s","formattedDate",formattedDate));
} catch (ParseException e) {
// Not a date
}
控制臺返回:
11:41:40.063調試測試值|FormattedDate=Sun Jan 12 00:00:00 EST 100
知道這里發生了什么嗎?
推薦答案
parse
方法不會在解析時驗證整個字符串是否被使用;您可以在有效日期之后隨機產生垃圾,一切都會正常進行。在這種情況下,100 112
可以被成功解析為日期,但它可以。
,這有點令人驚訝。
您可以提供ParsePosition
以驗證分析時是否使用了整個字符串。
ParsePosition pos = new ParsePosition(0);
dfyyyyMMdd.parse(aValue, pos);
if (pos.getIndex() != aValue.length()) {
// there's garbage at the end
}
這篇關于Java DateFormat.parse認為第112街100號是日期(&Q)的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,