2013-01-18 10 views
7

jestem coraz obiekt Date, który trzeba konwertować do formatu określonego XMLGregorian KalendarzData do XMLGregorianCalendar z określonym formacie

Próbowałem poniżej sposobów

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

otrzymuję wyjątek, na pewno ja robię źle tutaj. Ale chcę sformatować obiekt Date w określonym formacie, który jest wykonywany przez sdf.format doskonale.

Ale jak utworzyć obiekt XMLGregorianCalendar dla tego samego (z sformatowanejDate)?

Odpowiedz

4

Można to zrobić przez obiekt data samego:

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

Próbowałem z Twojego przykład, ale w wartości wyjściowej Dostaję „2013 -01-18T07: 46: 00.000 "jako wynik. Nie chcę "T" – Reddy

6

Powinieneś ustalona data format:

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

w Wyjściu dostaję "2013-01-18T07: 46: 00.000" Nie chcę T – Reddy

+1

możesz użyć dowolnego formatu dla wyjścia, ale newXMLGregorianCalendar (dateTime) akceptuje tylko daty w XSD format dateTime, zobacz API –