2016-04-22 77 views
0

会有什么样日期的日期格式:
2016年4月1日
2016年4月3日
2016年4月22日2016年4月22日的日期格式?

而且没有任何API来解析日期这样呢?

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

+0

谢谢,这些问题也帮了很大忙。 – andy

+0

另请参阅[本示例](https://gist.github.com/MenoData/a133c20f54e2ee5eaa60656caccfdd11)使用我的API(Time4J)。 –

回答

1

问题是Java不理解ordinal indicator后缀,1st,2nd 3rd等。首先需要删除它,然后将它传递给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); 
} 
相关问题