SimpleDateFormat模式

SimpleDateFormat模式

This question already has answers here:
Java Time Zone When Parsing DateFormat

(8个答案)


4年前关闭。




我正在尝试解析W3C XML Schema日期,如下所示
"2012-05-15T07:08:09+03:00"

符合W3C XML Schema dateTime规范的ISO 8601版本。

在上述日期中,时区标识符为"+03:00",但显然不存在SimpleDateFormat模式来表示它。

如果时区为"+0300",则Z(大写)将适用,并且SimpleDateFormat模式为
yyyy-MM-dd'T'HH:mm:ssZ

同样,如果时区为"GMT+03:00",则z(小写)将适用,并且SimpleDateFormat模式为
yyyy-MM-dd'T'HH:mm:ssz

(顺便说一下,大写的'Z'也可以使用)。

因此,是否存在SimpleDateFormat模式或替代方法来表示上述日期,而无需预处理日期字符串?

最佳答案

怎么样:

DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ"){
    public Date parse(String source,ParsePosition pos) {
        return super.parse(source.replaceFirst(":(?=[0-9]{2}$)",""),pos);
    }
};

10-06 14:10