xml – xsd:dateTime到Java OffsetDateTime
为了使用JAXB正确处理
xs:dateTime,我必须从String->
java.time.OffsetDateTime 编写我自己的转换器.
正如XML Schema Definition中所提到的,dateTime的灵感来自ISO 8601.我使用了OffsetDateTime.parse(s,DateTimeFormatter.ISO_OFFSET_DATE_TIME)来解析xs:dateTime,它适用于例如: "2007-12-03T10:15:30+01:00" //or "2007-12-03T10:15:30Z" 遗憾的是,在xs:dateTime中偏移部分为is declared optional,因此解析有效 "2016-03-02T17:09:55" 抛出DateTimeParseException. OffsetDateTime是否有 解决方法
我不认为有一个内置的,但你可以在
DateTimeFormatterBuilder 课程的帮助下自己创建.
您可以指定括在方括号中的可选偏移量,即[XXXXX](以匹配“HH:MM:ss”),然后,您可以在不存在的情况下提供默认偏移量( public static void main(String[] args) { String[] dates = { "2007-12-03T10:15:30+01:00","2007-12-03T10:15:30Z","2016-03-02T17:09:55","2016-03-02T17:09:55Z" }; DateTimeFormatter formatter = new DateTimeFormatterBuilder().appendPattern("yyyy-MM-dd'T'HH:mm:ss[XXXXX]") .parseDefaulting(ChronoField.OFFSET_SECONDS,0) // or OffsetDateTime.now().getLong(ChronoField.OFFSET_SECONDS) .toFormatter(); for (String date : dates) { System.out.println(OffsetDateTime.parse(date,formatter)); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |