0
何のような日付の日付形式になります:
2016年4月1日
2016年4月3日
2016年4月22日2016年4月22日の日付形式ですか?
そして、そのような日付を解析するための任意のAPIはありますか?
編集:重複した質問には、日付1(st)、2(nd)、3(rd)の解析に関する回答が含まれていません。第1回の解析、第2回のnd、 3rd。
何のような日付の日付形式になります:
2016年4月1日
2016年4月3日
2016年4月22日2016年4月22日の日付形式ですか?
そして、そのような日付を解析するための任意のAPIはありますか?
編集:重複した質問には、日付1(st)、2(nd)、3(rd)の解析に関する回答が含まれていません。第1回の解析、第2回のnd、 3rd。
問題は、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);
}
ありがとうございました。これらの質問も多くの助けになりました。 – andy
私のAPI(Time4J)の使用については、[こちらの例](https://gist.github.com/MenoData/a133c20f54e2ee5eaa60656caccfdd11)も参照してください。 –