【发布时间】:2020-03-27 14:06:14
【问题描述】:
我有一个带有以下格式的日期标签的肥皂网络服务
2019-12-01T04:00:00.0000000Z(七个零)
现在我正在实现客户端,我无法创建一个包含七个零的 XMLGregorianCalendar,我只剩下三个零了
我的代码
DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSSSSS'Z'");
Date date = df.parse("2019-12-01T04:00:00.0000000Z");
GregorianCalendar gcal = new GregorianCalendar();
gcal.setTime(date);
gcal.setTimeZone(TimeZone.getTimeZone("UTC"));
XMLGregorianCalendar fecha = DatatypeFactory.newInstance().newXMLGregorianCalendar(gcal);
System.out.println("fecha ->"+fecha.toString());
输出
fecha ->2019-12-01T07:00:00.000Z
如何让 XMLGregorianCalendar 在格式中保留七个零?
【问题讨论】:
-
我建议你不要使用
SimpleDateFormat和Date。这些类设计不良且过时,尤其是前者,尤其是出了名的麻烦。XMLGregorianCalendar也很旧,SimpleDateFormat只处理毫秒,正好是三位小数。而是使用来自java.time, the modern Java date and time API 的OffsetDateTime和DateTimeFormatter。 -
您是从生产代码中的
"2019-12-01T04:00:00.0000000Z"之类的字符串开始的,还是只是为了在问题中获取示例值? -
我没有做网络服务,我只需要做使用它的客户端并且日期以这种格式出现
标签: java date datetime soap xmlgregoriancalendar