2012-08-28 29 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()方法...

相关问题