我从字符串日期转换为 XMLGregorianCalendar
public static void convertStringToXMLDate(String dateString) {
Date dob=null;
DateFormat df=new SimpleDateFormat("yyyyMMdd");
try {
dob=df.parse( "20140210" );
} catch (ParseException e) {
e.printStackTrace();
}
GregorianCalendar cal = new GregorianCalendar();
cal.setTime(dob);
XMLGregorianCalendar xmlDate3;
try {
xmlDate3 = DatatypeFactory.newInstance().newXMLGregorianCalendar(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH)+1, cal.get(Calendar.DAY_OF_MONTH),dob.getHours(),dob.getMinutes(),dob.getSeconds(),DatatypeConstants.FIELD_UNDEFINED, DatatypeConstants.FIELD_UNDEFINED);
System.out.println(xmlDate3);
} catch (DatatypeConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
此代码打印 xmlDate3 = 2014-02-10T00:00:00。
如何在 XMLGregorianCalendar 中将其格式化为 20140210 或 2014/02/10
最佳答案
你不能。 XMLGregorianCalendar
是一个(来自 javadoc):
Representation for W3C XML Schema 1.0 date/time datatypes [...] normatively defined in W3C XML Schema 1.0 Part 2, Section 3.2.7-14.
如您所见,dateTime 引用的规范定义是:
3.2.7.1 Lexical representation
The ·lexical space· of dateTime consists of finite-length sequences of characters of the form:
'-'? yyyy '-' mm '-' dd 'T' hh ':' mm ':' ss ('.' s+)? (zzzzzz)?
格式中唯一可能的选择是在“词汇表示”和“规范表示”之间。您显示的格式(20140210
和 2014/02/10
)对于 XML 架构定义的 dateTime 值无效。
现在,如果您实际上想要一个 XML date 值,而不是 dateTime,那么您应该调用 newXMLGregorianCalendarDate(int year, int month, int day, int timezone)
而不是newXMLGregorianCalendar(int year, int month, int day, int hour, int minute, int second, int millisecond, int timezone)
.
输出将是:
2014-02-10
关于java - 无法格式化为 XMLGregorianCalendar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34125097/