2012-02-29 82 views
22

我有以下格式的日期在UI ..轉換日期的XMLGregorianCalendar

Eg: Thu. 03/01 

我將它們轉換爲的XMLGregorianCalendar如下所述。

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); 

我的輸出是「3/06/70 05:00 AM」而不是「3/06/2011 05:00 AM」。獲得適當的一年所需要的是什麼?

+0

@ Hovercraft充滿鰻魚......我爲此道歉。我沒有得到任何答覆,所以我想我的Q是不可理解的,我不得不刪除它們。再次抱歉。 – JNPW 2012-03-05 20:56:43

回答

50

你沒有提到今年在這個日期轉換中應該如何表現的任何事情,但這裏有一些讓你開始的僞代碼。請注意,我沒有明確處理在這個例子中的時區:

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

我做了以下代碼實現相同。可能是一個冗長的代碼,但工作正常。

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) 
    }