今天偶然用到字符串到时间的转换,使用的是org.apache.commons.lang.time.DateUtils.paraseDate(String sDate,String[] parasePatterns);
String[] parsePatterns = {"yyyy-MM", "yyyy年MM月", "yyyy/MM", "yyyyMM","yyyy-MM-dd", "yyyy年MM月dd日", "yyyy/MM/dd", "yyyyMMdd","yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm","yyyy/MM/dd HH:mm:ss", "yyyy/MM/dd HH:mm"};
传入的
19810101 打印的Mon May 01 00:00:00 CDT 1989
可以看出时间不对
正确案例:
String[] parsePatterns = {"yyyy-MM-dd", "yyyy年MM月dd日", "yyyy/MM/dd", "yyyyMMdd","yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm","yyyy/MM/dd HH:mm:ss", "yyyy/MM/dd HH:mm","yyyy年MM月","yyyy/MM", "yyyyMM","yyyy-MM",};
原因
所以如果pattern数组里面yyyy-MM在yyyyMMdd之前,就会出现这个问题,把格式长的放前面