2014-07-17 83 views
0

的日期和時間,我有這樣的代碼的日期:如何得到的XMLGregorianCalendar

public static XMLGregorianCalendar retrieveXMLGregorianCalendar(Date source) { 
      XMLGregorianCalendar dest = null; 
      Calendar calendar = Calendar.getInstance(); 
      if (source !=null) { 
       calendar.setTime(source); 
       DatatypeFactory datatypeFactory; 
       try { 
        datatypeFactory = DatatypeFactory.newInstance(); 
        dest = datatypeFactory.newXMLGregorianCalendarDate(calendar.get(Calendar.YEAR), calendar 
          .get(Calendar.MONTH) + 1, calendar.get(Calendar.DAY_OF_MONTH), DatatypeConstants.FIELD_UNDEFINED); 
        dest.setHour(calendar.get(Calendar.HOUR)); 
        dest.setMinute(calendar.get(Calendar.MINUTE)); 
        dest.setSecond(calendar.get(Calendar.SECOND)); 
       } catch (DatatypeConfigurationException e) { 
        e.printStackTrace(); 
        throw new SoapFaultException("Date Trasfomation Exception"); 
       } 
      } 
      return dest; 
     } 

與此代碼爲小時:

public static XMLGregorianCalendar retrieveXMLGregorianCalendarTime(Date source) { 
     XMLGregorianCalendar dest = null; 
     Calendar calendar = Calendar.getInstance(); 
     if (source !=null) { 
      calendar.setTime(source); 
      DatatypeFactory datatypeFactory; 
      try { 
      datatypeFactory = DatatypeFactory.newInstance(); 
      dest = datatypeFactory.newXMLGregorianCalendarTime(calendar.get(Calendar.HOUR_OF_DAY), calendar 
       .get(Calendar.MINUTE) + 1, calendar.get(Calendar.SECOND), DatatypeConstants.FIELD_UNDEFINED); 
      dest.setYear(calendar.get(Calendar.YEAR)); 
      dest.setMonth(calendar.get(Calendar.MONTH) + 1); 
      dest.setDay(calendar.get(Calendar.DAY_OF_MONTH)); 
      } catch (DatatypeConfigurationException e) { 
      e.printStackTrace(); 
      return null; 
      } 
     } 
     return dest; 
     } 

而我只是想趕上日期像這種格式(dd/MM/YYYY)和像這樣的小時(hh:mm:ss)。但我不知道如何去捕捉它。我嘗試過幾次,試圖抓住日期的小時或分鐘,但是我的日食說分鐘或小時沒有設置。

+1

請更具體一點 - 你想要什麼?你想將格式化的日期字符串轉換爲XMLGregorianCalendar,還是將XMLGregorianCalendar轉換爲Date對象? – Snaipe

回答

0

要格式化日期(爲String):

SimpleDateFormat sdfDate = new SimpleDateFormat("dd.MM.yyyy"); 

SimpleDateFormat sdfTime = new SimpleDateFormat("HH:mm:ss"); 

SimpleDateFormat sdfDateTime = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss"); 

System.out.println(sdfDate.format(source)); 

System.out.println(sdfTime.format(source)); 

System.out.println(sdfDateTime.format(source)); 
+0

感謝您的回答 – VincentBlanc

0

該方法返回你xmlGregorianCalendar

其轉換爲GregorianCalendar

最後用getTime()得到GregorianCalendar時間,然後利用SimpleDateFormat格式化在dd/MM/YYYY HH:mm:ss

SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss", Locale.ENGLISH); 
XMLGregorianCalendar xmlGregorianCalendar = retrieveXMLGregorianCalendar(new Date()); 
Date date = xmlGregorianCalendar.toGregorianCalendar().getTime(); 
System.out.println(dateFormat.format(date)); 
+0

感謝您的回答 – VincentBlanc