如何转换java。util。日期到soap支持的日期格式“yyyyMMdd'T'HH:mm:ss”,带区域id
我正在处理一个我想要转换java的情况。将日期转换为特定区域的soap支持格式(欧洲/布鲁塞尔)
我尝试过使用Java8区域id功能,但它似乎只适用于即时约会
ZoneId zoneId = ZoneId.of("Europe/Brussels");
ZonedDateTime zonedDateTime = ZonedDateTime.ofInstant(Instant.now(),
zoneId);
GregorianCalendar calendar = GregorianCalendar.from(zonedDateTime);
String xmlNow = convertToSoapDateFormat(calendar);
calendar.add(Calendar.MINUTE, 61);
String xmlLater = convertToSoapDateFormat(calendar);
//Method for soap conversion
private String convertToSoapDateFormat(GregorianCalendar cal) throws DatatypeConfigurationException {
XMLGregorianCalendar gDateFormatted2 = DatatypeFactory.newInstance().newXMLGregorianCalendar(
cal.get(Calendar.YEAR), cal.get(Calendar.MONTH) + 1, cal.get(Calendar.DAY_OF_MONTH),
cal.get(Calendar.HOUR_OF_DAY), cal.get(Calendar.MINUTE), cal.get(Calendar.SECOND),
DatatypeConstants.FIELD_UNDEFINED, DatatypeConstants.FIELD_UNDEFINED);
return gDateFormatted2.toString();// + "Z";
}
我想把这个日期(2002-02-06)转换成这个SOAP格式2002-02-06T08:00:00
# 1 楼答案
爪哇。时间
使用java。时间,一种现代的Java日期和时间API,由Java8推出,包括
ZoneId
,当然是推荐的方法。而且效果很好。我无法从你的问题中看出你受到了什么打击。如果我理解正确,DateTimeFormatter.ISO_OFFSET_DATE_TIME
将为您提供SOAP XML所需的格式刚才我运行这段代码时,输出是:
# 2 楼答案
我不确定这是否是你想要的答案,所以如果我误解了你的问题,请告诉我。然后我会删除答案
您可以使用
SimpleDateFormat
类来实现您的目标。用by创建格式然后使用以下调用设置日期格式:
# 3 楼答案
可以将SimpleDataFormat类与setTimezone方法一起使用