2012-02-29 17 views
22

mam datę w następującym formacie w interfejsie ..data Konwersja do XMLGregorianCalendar

Eg: Thu. 03/01 

przekonwertować je do XMLGregorianCalendar jak wyjaśniono poniżej.

final DateFormat format = new SimpleDateFormat("E. M/d"); 
final String dateStr = closeDate; 
final Date dDate = format.parse(dateStr); 

GregorianCalendar gregory = new GregorianCalendar(); 
gregory.setTime(dDate); 

XMLGregorianCalendar dealCloseDate = DatatypeFactory.newInstance() 
.newXMLGregorianCalendar(gregory); 

moje wyjście jest "06.03.70 05:00" zamiast "3/06/2011 5:00 AM". Jaki jest wymagany rozmiar zasobu, aby uzyskać odpowiedni rok.

+0

@ Poduszkowiec pełen węgorzy ... Przepraszam za to. Nie dostałem żadnej odpowiedzi, więc myślałem, że moje Q nie było zrozumiałe i musiałem je usunąć. Jeszcze raz przepraszam. – JNPW

Odpowiedz

50

Nie wspomniałeś nic o tym, jak rok ma być reprezentowany w tej konwersji daty, ale tutaj jest jakiś pseudokod, aby zacząć. Zauważ, że nie omawiam wyraźnie strefy czasowej w tym przykładzie:

final DateFormat format = new SimpleDateFormat("E. M/d"); 
final String dateStr = "Thu. 03/01"; 
final Date date = format.parse(dateStr); 

GregorianCalendar gregory = new GregorianCalendar(); 
gregory.setTime(date); 

XMLGregorianCalendar calendar = DatatypeFactory.newInstance() 
     .newXMLGregorianCalendar(
      gregory); 
0

Zrobiłem następujący kod, aby osiągnąć to samo. Może to być długi kod, ale działa dobrze.

def gregorianCalendar = new GregorianCalendar() 
    def xmlGregorianCalendar = newInstance().newXMLGregorianCalendar(gregorianCalendar) 

    if (//past date is needed) { 
     def date = xmlGregorianCalendar.toGregorianCalendar().time 
     def cal = Calendar.getInstance() 
     cal.setTime(date) 
     cal.add(Calendar.DATE,-3); //subtract 3 days 
     date.setTime(cal.getTime().getTime()) 
     gregorianCalendar.setTime(date) 
     xmlGregorianCalendar = newInstance().newXMLGregorianCalendar(gregorianCalendar) 
    } 
Powiązane problemy