簡體   English   中英

SimpleDateFormat行為

[英]SimpleDateFormat behaviour

我有以下幾行:

final SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date d = simpleDateFormat.parse("2004-52-05");

我希望第2行會拋出異常,因為'52'不是有效的月份,但是代碼運行並且存儲在d對象中的日期是

Sat Apr 05 00:00:00 EEST 2008

有人可以解釋一下為什么嗎?

如果要創建嚴格匹配模式的日期對象,請將lenient設置為false。

來自Javadoc

Calendar有兩種解釋日歷字段的模式,lenient和non-lenient。 當日歷處於寬松模式時,它接受比它產生的更廣泛的日歷字段值。 當日歷重新計算get()返回的日歷字段值時,所有日歷字段都會進行規范化。 例如,寬松的GregorianCalendar將MONTH == JANUARY,DAY_OF_MONTH == 32解釋為2月1日。

有關lenitent的更多信息,請參閱此處

所以添加這個..

simpleDateFormat.setLenient(false);

這會像你期待的那樣拋出Exception ......

java.text.ParseException: Unparseable date: "2004-52-05"

暫無
暫無

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

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