PNS*_*PNS 30 java date iso8601 simpledateformat
我试图解析W3C XML Schema日期,如下所示
"2012-05-15T07:08:09+03:00"
Run Code Online (Sandbox Code Playgroud)
它符合W3C XML Schema dateTime规范的ISO 8601版本.
在上述日期中,时区标识符是"+03:00",但SimpleDateFormat显然不存在表示它的模式.
如果时区是"+0300",那么Z(大写)将是适用的并且SimpleDateFormat模式将是
yyyy-MM-dd'T'HH:mm:ssZ
Run Code Online (Sandbox Code Playgroud)
类似地,如果时区是"GMT+03:00",那么z(小写)将是适用的并且SimpleDateFormat模式将是
yyyy-MM-dd'T'HH:mm:ssz
Run Code Online (Sandbox Code Playgroud)
('Z'顺便说一句,大写也适用).
那么,是否有一种SimpleDateFormat模式或解决方法来表示上述日期而无需预处理日期字符串?
ass*_*ias 34
如果您使用Java 7+,则此模式应该有效(X适用于ISO 8601时区):
SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssX");
Run Code Online (Sandbox Code Playgroud)
Vla*_*lad 24
怎么样的:
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);
}
};
Run Code Online (Sandbox Code Playgroud)
Alv*_*vin 11
嗯,日期格式看起来像XML datetime数据类型格式?如果是XML datetime数据类型格式,则可以使用javax.xml.datatype.DatatypeFactory创建XMLGregorianCalendar
DatatypeFactory
.newInstance()
.newXMLGregorianCalendar("2012-05-15T07:08:09+03:00");
Run Code Online (Sandbox Code Playgroud)
上面的调用返回实例,XMLGregorianCalendar你可以使用该对象转换为其他Java datetime对象GregorianCalendar.
| 归档时间: |
|
| 查看次数: |
42902 次 |
| 最近记录: |