LoginSignup
3
4

More than 5 years have passed since last update.

commons-lang3 v3.5でのDateUtils#parseDateの動作変更

Last updated at Posted at 2016-11-02

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
3
4
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4