Java 无法格式化为XMLGregorianCalendar
我将字符串日期转换为XMLGregorianCalendarJava 无法格式化为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) {
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
。