我需要將字符串解析爲日期,但事先並不知道字符串將處於哪種模式。這類似於問題How to convert String to Date without knowing the format?。使用不同格式/模式解析字符串
爲了解決這個問題,我採用了兩種模式來測試結果。但是,我所得到的有點奇怪。
實施例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日' 的結果很奇怪。
如何解析日期字符串使用不同的格式/模式,以使得到的日期是正確的?
謝謝。這工作。 –