Java 将日历转换为具有特定格式的XMLGregorianCalendar

Java 将日历转换为具有特定格式的XMLGregorianCalendar,java,Java,在将日历对象转换为格式为YYYY-MM-DD HH:MM:ss的XMLGregorian日历时,我遇到了一些问题 我目前的代码是: Calendar createDate = tRow.getBasic().getDateCreated(0).getSearchValue(); Date cDate = createDate.getTime(); GregorianCalendar c = new GregorianCalendar(); c.setTime(cDate); XMLGregori

在将日历对象转换为格式为
YYYY-MM-DD HH:MM:ss
的XMLGregorian日历时,我遇到了一些问题

我目前的代码是:

Calendar createDate = tRow.getBasic().getDateCreated(0).getSearchValue();
Date cDate = createDate.getTime();
GregorianCalendar c = new GregorianCalendar();
c.setTime(cDate);
XMLGregorianCalendar date2 = DatatypeFactory.newInstance().newXMLGregorianCalendar(c);
返回日期为
2013-01-03T11:50:00.000-05:00

我想把它改为
2013-01-03 11:50:00

我已经检查了一些帖子,它们使用DateFormat解析日期的字符串表示形式,但是我的日期是作为日历对象而不是字符串提供给我的

我希望你能朝着正确的方向轻推我,帮助我解决这个问题

DateFormat#format
接受一个
对象
参数。从内存中,它应该接受一个
Calendar
对象,否则,它将接受一个
Date
对象,因此您可以使用
Calendar\getTime
作为更坏的情况


可以使用的实例指定自定义格式。这将确保不同系统的结果始终相同

您是否看过本教程,它可能会有所帮助

具体而言,此代码是一个很好的示例:

// Format the output with leading zeros for days and month
SimpleDateFormat date_format = new SimpleDateFormat("yyyyMMdd");
System.out.println(date_format.format(cal1.getTime()));

XMLGregorianCalendar具有您无法更改的特定W3C字符串表示形式

但是,您可以使用
SimpleDateFormat
设置日期的格式

DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateStr = dateFormat.format(cDate);
您可以从
XMLGregorianCalendar
对象获取
Date
对象,如下所示:

xmlCalendar.getGregorianCalendar().getDate()

我不需要从XMLGregorianCalendar获取日期,而是设置它。XMLGregorianCalendar是接收web服务所必需的。是的,如果您希望将日期的格式设置为与默认日期不同的格式,则需要使用
date
对象。你从其中一个开始,所以你根本不需要XMLGregorianCalendar。是的,我希望我可以避免编辑从XMLGreg生成的类。。。到目前为止,但似乎我必须这样做XMLGregorianCalendar使用W3C标准表示日期。如果web服务在您的控制之下,一个更优雅的方法可能是让它接受标准。否则SimpleDateFormat或Joda time看起来是前进的方向……这对我来说不起作用。我必须将SimpleDataFormat声明为新SimpleDataFormat(“yyyy-MM-dd'T'HH:MM:ss”)中间有一个
'T'
,因为
XMLGregorianCalendar
需要它