Java 无法格式化为XMLGregorianCalendar

Java 无法格式化为XMLGregorianCalendar,java,xml,spring,datetime,xsd,Java,Xml,Spring,Datetime,Xsd,我将字符串日期转换为XMLGregorianCalendar public static void convertStringToXMLDate(String dateString) { Date dob=null; DateFormat df=new SimpleDateFormat("yyyyMMdd"); try { dob=df.parse( "20140210" ); } catch (ParseException e) {

我将字符串日期转换为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,您无法。是一个(来自javadoc):

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();
    }

}
中规范定义的W3C XML Schema 1.0日期/时间数据类型[…]的表示形式

如您所见,dateTime的引用标准定义为:

3.2.7.1词汇表征

日期时间的由以下形式的有限长度字符序列组成:
'-'?yyyy'-'mm'-'dd'T'hh':'mm':'ss('.'s+)?(zzzzzz)?

在形式上唯一可能的选择是“词汇表征”和“规范表征”。您显示的格式(
20140210
2014/02/10
)对于定义的XML架构dateTime值无效


现在,如果您实际上想要一个XMLdate值,而不是dateTime,那么您应该调用而不是

然后,输出将是:

2014-02-10

谢谢你的回答!这对方法很有帮助,因为OP已经知道如何将
Date
转换为
xmlgoriiancalendar