日期的日期格式如下:
2016年4月1日
2016年4月3日
2016年4月22日
是否有任何API可以解析这样的日期?
编辑:重复的问题不包含任何关于解析日期包含1(st),2(nd),3(rd)的答案。我不知道如何解析st中的st,nd in 2nd和rd在第3。
答案 0 :(得分:1)
问题是Java不了解ordinal indicator后缀,第1,第2第3等。首先需要删除它,然后将其传递给DateFormat。
我还建议您确保正确设置您的区域设置,因为" April"将是不同语言的不同字符串,这将影响您的软件的地理可移植性。
public static void main(String[] args) throws ParseException {
System.out.println(parseWithOrdinals("1st April,2016"));
System.out.println(parseWithOrdinals("3rd April,2016"));
System.out.println(parseWithOrdinals("22nd April,2016"));
}
private static Date parseWithOrdinals(String date) throws ParseException {
DateFormat format = new SimpleDateFormat("dd MMM,yyyy", Locale.UK);
String corrected = date.replaceFirst("(\\d+)+.*\\s(.*)", "$1 $2");
return format.parse(corrected);
}