public class Main {
public static void main(String[] args) throws IOException, ParseException, DatatypeConfigurationException {
DateFormat format = new SimpleDateFormat("YYYY-MM-DD");
Date date = format.parse("2022-04-13T09:54:54-04:00");
GregorianCalendar cal = new GregorianCalendar();
cal.setTime(date);
XMLGregorianCalendar xmlGregCal = DatatypeFactory.newInstance().newXMLGregorianCalendar(cal);
System.out.println(xmlGregCal);
// Expected is 2022-04-13 in XMLGregorianCalendar value
// But getting 2021-12-26T00:00:00.000+11:00
}
}的XMLGregorianCalendar值为2022-04-13 .但是得到2021-12-26T00:00.000+11:00。能请一些专家帮忙吗?
发布于 2022-06-11 04:29:29
你有很多问题。
将输入解析为OffsetDateTime对象。您的输入文本符合java.time默认使用的ISO 8601标准格式。因此,不需要指定格式模式。
OffsetDateTime odt = OffsetDateTime.parse( "2022-04-13T09:54:54-04:00" ) ;您不需要进一步涉及更多遗留类,如GregorianCalendar或XMLGregorianCalendar。工作完成了。没有必要使用或学习这些课程。它们的功能已经完全被java.time所取代。
您可以通过调用OffsetDate#toString生成标准ISO 8601格式的文本。
String output = odt.toString() ;2022-04-13T09:54:54-04:00
你说过:
将格式更改为XMLGregorianCalendar
日期-时间对象没有“格式”。文本有格式。GregorianCalendar、XMLGregorianCalendar和OffsetDateTime不是文本。
https://stackoverflow.com/questions/72580617
复制相似问题