需要助手,我需要将XMLGregorianCalendar
的默认格式(2017-01-18)更改为示例" 20170118" ,我在这里尝试过很多例子,但没有帮助
private static SimpleDateFormat formats = new SimpleDateFormat("yyyyMMdd");
public static XMLGregorianCalendar unmarshal(String value) {
try {
return toXMLGregorianCalendar(formats.parse(value));
} catch ( ParseException e ) {
e.printStackTrace();
return null;
}
}
答案 0 :(得分:1)
我担心你不能这样做。如果您查看课程XMLGregorianCalendar
,您会发现toString()
方法只调用toXMLFormat()
而toXMLFormat()
不提供格式自定义的任何可能性
public String toXMLFormat() { QName typekind = getXMLSchemaType(); String formatString = null; // Fix 4971612: invalid SCCS macro substitution in data string // no %{alpha}% to avoid SCCS macro substitution if (typekind == DatatypeConstants.DATETIME) { formatString = "%Y-%M-%DT%h:%m:%s" + "%z"; } else if (typekind == DatatypeConstants.DATE) { formatString = "%Y-%M-%D" + "%z"; } else if (typekind == DatatypeConstants.TIME) { formatString = "%h:%m:%s" + "%z"; } else if (typekind == DatatypeConstants.GMONTH) { formatString = "--%M" + "%z"; } else if (typekind == DatatypeConstants.GDAY) { formatString = "---%D" + "%z"; } else if (typekind == DatatypeConstants.GYEAR) { formatString = "%Y" + "%z"; } else if (typekind == DatatypeConstants.GYEARMONTH) { formatString = "%Y-%M" + "%z"; } else if (typekind == DatatypeConstants.GMONTHDAY) { formatString = "--%M-%D" + "%z"; } return format(formatString); }
好吧,如果您只想从yyyyMMdd
对象中获取XMLGregorianCalendar
类型的字符串,则可以执行以下操作:
XMLGregorianCalendar c = YourCalendarHelper.unmarshal("2017-01-18");
SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
String str = format.format(c.toGregorianCalendar().getTime());
System.out.println(str); // 20170118
顺便说一下,如果转换过程中出现异常,除非你知道你已经100%确定如何处理它,否则不要抓住它。通过方法声明抛出它,这样调用者就可以知道潜在的失败。