我使用SimpleDateFormatter
解析字符串时,有时会年已丢失,有时不
问题我面对解析包含在毫米/日/年格式转换成Date
对象日期多个String
对象日期的是,一些字符串包含完整的日期意味着它是MM/DD/YYYY而一些字符串不包含一年来这种格式MM/DD
我使用这种格式来解析日期MM/DD/YYYY但每次我只有月和日获得一个字符串,我得到解析异常。
我想知道,有没有什么办法,如果一年字段丢失,那么我可以使用类似于或我需要解决它进入异常体?
我使用SimpleDateFormatter
解析字符串时,有时会年已丢失,有时不
问题我面对解析包含在毫米/日/年格式转换成Date
对象日期多个String
对象日期的是,一些字符串包含完整的日期意味着它是MM/DD/YYYY而一些字符串不包含一年来这种格式MM/DD
我使用这种格式来解析日期MM/DD/YYYY但每次我只有月和日获得一个字符串,我得到解析异常。
我想知道,有没有什么办法,如果一年字段丢失,那么我可以使用类似于或我需要解决它进入异常体?
就我所知,您可以创建一个不需要一年的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
}
}
只需创建两个单独的SimpleDateFormat
实例,一个是您拥有的实例,另一个是仅有日期和月份的实例。您首先分析字符串并将其传递给正确的格式化程序。
或者将它传递给第一个,如果抛出异常,则将其传递给第二个。
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我们知道它是否被正确解析。
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(
)方法...