2016-04-22 8 views
0

何のような日付の日付形式になります:
2016年4月1日
2016年4月3日
2016年4月22日2016年4月22日の日付形式ですか?

そして、そのような日付を解析するための任意のAPIはありますか?

編集:重複した質問には、日付1(st)、2(nd)、3(rd)の解析に関する回答が含まれていません。第1回の解析、第2回のnd、 3rd。

+0

ありがとうございました。これらの質問も多くの助けになりました。 – andy

+0

私のAPI(Time4J)の使用については、[こちらの例](https://gist.github.com/MenoData/a133c20f54e2ee5eaa60656caccfdd11)も参照してください。 –

答えて

1

問題は、Javaがordinal indicator接尾辞、第1、第2などを理解していないことです。まずこれを削除して、それを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); 
} 
関連する問題