我需要将字符串解析为日期,但不知道字符串将采用哪种模式。这类似于问题如何在不知道格式的情况下将字符串转换为日期?.
为了解决这个问题,我采用了几种模式来测试结果。但是,我得到的有点奇怪。
示例 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”的结果很奇怪。
如何使用不同的格式/模式解析日期字符串,以便生成的日期正确?