2014-04-17 13 views
6

Jednym z zewnętrznych API używamy wymaga formatuJava SimpleDateFormat dla YYYY-MM-DDTgg: mm: ssTZD

"YYYY-MM-DDThh:mm:ssTZD"

być przekazywane w

XMLGregorianCalendar

obiektu. Nie jestem pewien, czy jest coś w Javie, który obsługuje "T". Zastanawiam się, czy data może zostać przetworzona na powyższy format w Javie? Przykładem ważnej dacie dostarczyły one jest

"2009-07-16T19:20:30-05:00" ............

Update: 

     SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZZZ");   
     GregorianCalendar gc = new GregorianCalendar(); 
     String dateString = sdf.format(gc.getTime());  
     gc.setTime(sdf.parse(dateString));  
     XMLGregorianCalendar date2 = DatatypeFactory.newInstance().newXMLGregorianCalendar(gc); 

wyjściowa:

2014-04-17T13: 11: 30,000 +01: 00

+0

Sprawdź mój zaktualizowaną odpowiedź –

Odpowiedz

15

Zastosowanie JodaTime'sDateTimeFormat API z "yyyy-MM-dd'T'HH:mm:ssZ" data wzór

String date = "2009-07-16T19:20:30-05:00"; 
String pattern = "yyyy-MM-dd'T'HH:mm:ssZ"; 
DateTimeFormatter dtf = DateTimeFormat.forPattern(pattern); 
DateTime dateTime = dtf.parseDateTime(date); 
System.out.println(dateTime); // 2009-07-16T19:20:30-05:00 
+0

Co jeśli mam jak tego wzór „rrrr-mm-DDTgg: MM: SSZ” (T bez apostrofów), Czy istnieje sposób wokół przeanalizować tę rzecz do tej pory obiekt? –

2

Należy umieścić go w pojedynczych cudzysłowach.

Spróbuj

YYYY-mm-dd'T'hh:MM:ssZ 
+0

Cześć Pete, próbowałem, ale jakoś to dołącza "000". Zobacz moją zaktualizowaną odpowiedź. – Abidi

3

Spróbuj Java 8 LocalDateTime.parse

Można również użyć threeten jeśli jesteś na wcześniejszej wersji Java.

Przykład: DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssZ").format(yourLocalDateTime)

0

Tak, can.Try tę datę formatowania.

DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS"); 
Powiązane problemy