2013-01-18 147 views
7

我得到一个Date对象,这是我需要转换为XMLGregorian日历特定格式日期XMLGregorianCalendar以及特定格式

我尝试以下方法

String formattedDate = sdf.format(categoryData.getBulkCollectionTime()); //yyyy-MM-dd HH:mm:ss 
XMLGregorianCalendar xmlCal = DatatypeFactory.newInstance().newXMLGregorianCalendar(formattedDate); 
dataListType.setTimestamp(xmlCal); 

我得到一个例外,我肯定我做错了。但我想Date对象格式化成指定格式,这是由sdf.format完全可以做到的。

但我怎么创建相同的(从formattedDate)中的XMLGregorianCalendar对象?

回答

4

您可以通过日期对象本身做到这一点:

String formattedDate = sdf.format(categoryData.getBulkCollectionTime()); //yyyy-MM-dd HH:mm:ss 
convertStringToXmlGregorian(formattedDate); 


public XMLGregorianCalendar convertStringToXmlGregorian(String dateString) 
{ 
     try { 
      Date date = sdf.parse(dateString); 
      GregorianCalendar gc = (GregorianCalendar) GregorianCalendar.getInstance(); 
      gc.setTime(date); 
      return DatatypeFactory.newInstance().newXMLGregorianCalendar(gc); 
     } catch (ParseException e) { 
      // Optimize exception handling 
      System.out.print(e.getMessage()); 
      return null; 
     } 

} 
+3

我与你的榜样试过,但在产值我收到“2013 -01-18T07:46:00.000" 作为输出。我不想在输出中输入“T” – Reddy

6

您应该固定的日期格式:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); 
sdf.setTimeZone(TimeZone.getTimeZone("GMT")); 
String date = sdf.format(new Date()); 
XMLGregorianCalendar xmlCal = DatatypeFactory.newInstance().newXMLGregorianCalendar(date); 
+1

我得到“2013-01-18T07:46:00.000”我不希望T – Reddy

+1

您可以使用任何格式输出,但newXMLGregorianCalendar(dateTime)仅接受XSD中的日期DateTime格式,请参阅API –