我从String date转换为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
答案 0 :(得分:1)
你做不到。 XMLGregorianCalendar
是一个(来自javadoc):
在W3C XML Schema 1.0 Part 2, Section 3.2.7-14中规范定义的W3C XML Schema 1.0日期/时间数据类型的表示。
如您所见, dateTime 的引用规范性定义是:
3.2.7.1词汇表示
dateTime 的·lexical space·由以下格式的有限长度字符序列组成:
'-'? yyyy '-' mm '-' dd 'T' hh ':' mm ':' ss ('.' s+)? (zzzzzz)?
格式中唯一可能的选择是在“词汇表示”和“规范表示”之间。您显示的格式(20140210
和2014/02/10
)对于XML Schema定义的 dateTime 值无效。
现在,如果您确实需要XML 日期值,而不是 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)
。< / p>
输出将是:
2014-02-10