文字列を日付に解析する必要がありますが、文字列がどのパターンになるかを事前に知りません。これは、形式を知らずに文字列を日付に変換する方法の質問に似ています。.
これを解決するために、いくつかのパターンを採用して結果をテストしました。しかし、私が得ているのは少し奇妙です。
例 1:
import java.util.Date;
import org.apache.commons.lang3.time.DateUtils;
public Date extractDate(String dateStr) {
String [] datePatterns = {"yyyy-MM-dd", "dd-MM-yyyy"};
Date date = null;
try {
date = DateUtils.parseDate(dateStr, datePatterns);
}
catch (Exception except) {
except.printStackTrace();
}
return date;
}
public static void main(String[] args) throws Exception {
System.out.println ("2013-09-30:" + extractDate("2013-09-30") );
System.out.println ("30-09-2013:" + extractDate("30-09-2013") );
}
これは与える:
2013-10-30:Wed Oct 30 00:00:00 EAT 2013
30-09-2013:Mon Mar 05 00:00:00 EAT 36
「30-09-2013」を解析した結果は明らかに奇妙です。
例 2: ここではパターンのみを切り替えます
String [] datePatterns = {"dd-MM-yyyy", "yyyy-MM-dd"};
これは与える:
2013-10-30:Mon Mar 05 00:00:00 EAT 36
30-09-2013:Mon Sep 30 00:00:00 EAT 2013
例 2 では、'2013-10-30' を解析した結果が奇妙です。
結果の日付が正しいように、さまざまな形式/パターンを使用して日付文字列を解析するにはどうすればよいですか?