首页 文章

在转换为Java对象之前检查xsd datetime是否有定义的时区[duplicate]

提问于
浏览
0

这个问题在这里已有答案:

这是topo,我有来自XSD文件的JAXB生成的java类 . 对于 xsd:datetime 类型,转换将通过public static Calendar javax.xml.bind.DatatypeConverter.parseDateTime(String lexicalXSDDateTime)方法 .

我无法访问日期的字符串值(xml文件中的那个),我有权访问的是生成的 Calendar 对象,而我想知道的是,是否在日期的原始字符串值中,是否定义了时区 .

例如,这个字符串 2015-07-29T11:17:02.428+02:00 有一个定义的时区,其中一个 2015-07-29T11:17:02.428 有一个未定义的时区,而我想知道的是生成的 Calendar 对象最初是一个定义的时区 .

我尝试了 Calendar.getTimeZone() 方法,但似乎xsd到java转换不会使时区无效 .

例如,以下代码

System.out.println(DatatypeConverter.parseDateTime("2015-07-29T11:17:02.428+02:00").getTimeZone());
System.out.println(DatatypeConverter.parseDateTime("2015-07-29T11:17:02.428").getTimeZone());

输出这个

sun.util.calendar.ZoneInfo [id =“GMT 02:00”,偏移= 7200000,dstSavings = 0,useDaylight = false,transitions = 0,lastRule = null] sun.util.calendar.ZoneInfo [id =“Europe /Paris",offset=3600000,dstSavings=3600000,useDaylight=true,transitions=184,lastRule=java.util.SimpleTimeZone[id=Europe/Paris,offset=3600000,dstSavings=3600000,useDaylight=true,startYear=0, STARTMODE = 2,startMonth = 2,朝九特派= -1,startDayOfWeek = 1,开始时间= 3600000,startTimeMode = 2,endMode = 2,endMonth = 9,endday指定= -1,一个endDayOfWeek = 1,结束时间= 3600000,endTimeMode = 2] ]

1 回答

相关问题