2012-02-20 111 views
1

如果他輸入日期超出範圍(例如月= 22),我想要證明用戶。但dateFormat存儲在全局設置文件中,所以我不知道輸入字符串中月份字段的確切位置。我試着使用ParseException的的getErrorOffset()方法,但它總是返回輸入字符串SimpleDateFormat解析錯誤位置

SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy"); 
    sdf.setLenient(false); 
    try 
    { 
     sdf.parse("22/12/2009"); 
    } 
    catch (ParseException ex) 
    { 
     ex.getErrorOffset(); 
    } 

有沒有什麼解決的終點位置(10)? THX

回答

0

要關閉寬鬆解析關:

sdf.setLenient(false); 

the documentation

+0

我想告訴用戶他在哪一部分日期犯了一個錯誤。 – turboDi 2012-02-20 13:53:16

+0

並將'Unparseable date:'22/12/2009''異常替換爲'月份編號應該在1和12之內' – turboDi 2012-02-20 13:57:19

0

docs

如果發生錯誤,則pos的索引不改變,將pos的錯誤索引設置爲發生錯誤的字符的索引,並返回null。

+0

'SimpleDateFormat sdf = new SimpleDateFormat(「MM/dd/yyyy」,Locale.US); sdf.setLenient(false); ParsePosition pos = new ParsePosition(0); sdf.parse(「22/12/2012」,pos); '此代碼在索引和錯誤索引中均返回10 – turboDi 2012-02-20 14:22:09