2016年4月22日的日期格式?

时间:2016-04-22 06:23:53

标签: java date datetime

日期的日期格式如下:
2016年4月1日
2016年4月3日
2016年4月22日

是否有任何API可以解析这样的日期?

编辑:重复的问题不包含任何关于解析日期包含1(st),2(nd),3(rd)的答案。我不知道如何解析st中的st,nd in 2nd和rd在第3。

1 个答案:

答案 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);
}