2016-04-22 86 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); 
} 
相關問題