2012-08-28 75 views
3

我使用SimpleDateFormatter解析字符串時,有時會年已丟失,有時不

問題我面對解析包含在毫米/日/年格式轉換成Date對象日期多個String對象日期的是,一些字符串包含完整的日期意味着它是MM/DD/YYYY而一些字符串不包含一年來這種格式MM/DD

我使用這種格式來解析日期MM/DD/YYYY但每次我只有月和日獲得一個字符串,我得到解析異常。

我想知道,有沒有什麼辦法,如果一年字段丟失,那麼我可以使用類似於或我需要解決它進入異常體?

回答

2

就我所知,您可以創建一個不需要一年的SimpleDateFormat實例。 因此,只要使用的try-catch-座

try{ 
    //try formatting with simpledate instance with year 
}catch (Exception thrown when no year){ 
    try{ 
     //try formatting with simple date instace without year 
    } catch (Exception e) 
     //something went wrong both did not accept it 
    } 
} 
4

只需創建兩個單獨的SimpleDateFormat實例,一個是您擁有的實例,另一個是僅有日期和月份的實例。您首先分析字符串並將其傳遞給正確的格式化程序。

或者將它傳遞給第一個,如果拋出異常,則將其傳遞給第二個。

0
ParseDate(String yourDate); 
{ 
try { 
Date reqDate=sdf.parse(yourDate);//sdf is instance of you date formatter 
return reqDate; 
} catch (ParseException e) { 
return null; 
e.printStackTrace(); 
} 
} 

嘗試使用此功能。我認爲它會起作用。如果拋出異常,則返回null。通過這種方式,通過檢查null我們知道它是否被正確解析。

-1

A碼是值得千言萬語....

 DateFormat df; 
     Calendar c = Calendar.getInstance(); 
     String s = new String("12/25/2012"); 

     String[] arr = s.split("/"); 

     if(arr.length>2){ 

c.set(Integer.parseInt(arr[0]), Integer.parseInt(arr[1]),Integer.parseInt(arr[2])); 
     } 
     else{ 

      c.set(Integer.parseInt(arr[0]), Integer.parseInt(arr[1])); 
     } 

     df = DateFormat.getDateInstance(DateFormat.SHORT); 

     System.out.println(df.format(c.getTime())); 

可以稍後將其轉換回Date對象使用df.parse()方法...

相關問題