![](/img/trans.png)
[英]JXDatePicker using SimpleDateFormat to format dd.MM.yy to dd.MM.yyyy with current century
[英]SimpleDateFormat seems to allow a year of yy when the format is set to dd/mm/yyyy
如果我有這個:
private static final String DATE_FORMAT = "dd/MM/yyyy";
DateFormat formatter = new SimpleDateFormat(DATE_FORMAT);
formatter.setLenient(false);
formatter.parse("01/01/98");
如果傳入 2 位數年份,我的應用程序是否應該拋出異常? 這似乎沒有任何問題。
否SimpleDateFormat
用於從字符串解析日期和從日期生成字符串。 格式字符串的解釋因這些用法而異。 在您的情況下,您正在從字符串中解析日期。 98
是一個合法值,因為您使用的是yyyy
,所以按字面意思解釋(即 98 AD)。 如果您將yyyy
替換為yy
或y
,則解析應將 98 解釋為 1998。如果您需要 4 位日期,則需要添加一些驗證碼來執行此操作。
請注意, setLenient
不會影響此處的任何內容,因為每個 position 中的值都是合法的。 position 年不需要 4 位數字(也不限於 4 位數字)。 如果解釋不寬松並且您將其傳遞給“1998/04/12”,它將引發異常,因為 1998 不在 1-12 的范圍內。 如果您設置 lenient 那么它將修改值以使其進入范圍(1998 變為 6)並向前沖鋒。 由於年份沒有實際界限,因此對 position 年份沒有影響。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.