commons-lang3のバージョンを3.4から3.5に上げたところ、日付のパースに失敗する問題が発生した。以下のようなコードでバージョン3.4と3.5の差異を確認できる。
実験用コード
DateUtilsTest.java
package sample;
import org.apache.commons.lang3.time.DateFormatUtils;
import org.apache.commons.lang3.time.DateUtils;
import java.text.ParseException;
import java.util.Date;
public class DateUtilsTest {
private static String pattern = DateFormatUtils.ISO_DATETIME_TIME_ZONE_FORMAT.getPattern();// yyyy-MM-dd'T'HH:mm:ssZZ
private static Date parse(String str) {
try {
return DateUtils.parseDate(str, pattern);
} catch (ParseException e) {
return null;
}
}
public static void main(String[] args) throws ParseException {
System.out.println(parse("2016-11-02T14:30:00+09:00"));
System.out.println(parse("2016-11-02T14:30:00Z"));
System.out.println(parse("2016-11-02T14:30:00+0900"));
System.out.println(parse("2016-11-02T14:30:00JST"));
System.out.println(parse("2016-11-02T14:30:00 JST"));
System.out.println(parse("2016-11-02T14:30:00"));
}
}
commons-lang3 v3.4での結果
Wed Nov 02 14:30:00 JST 2016
null
Wed Nov 02 14:30:00 JST 2016
Wed Nov 02 14:30:00 JST 2016
Wed Nov 02 14:30:00 JST 2016
null
commons-lang3 v3.5, v3.6での結果
Wed Nov 02 14:30:00 JST 2016
Wed Nov 02 23:30:00 JST 2016
null
null
null
null