2013-01-03 4 views
5

Ich habe einige Probleme bei der Konvertierung eines Kalenderobjekts in einen XMLGregorian Kalender im Format YYYY-MM-DD HH:mm:ss.Konvertieren von Kalender in XMLGregorianCalendar mit spezieller Formatierung

Mein aktueller Code ist:

Calendar createDate = tRow.getBasic().getDateCreated(0).getSearchValue(); 
Date cDate = createDate.getTime(); 
GregorianCalendar c = new GregorianCalendar(); 
c.setTime(cDate); 
XMLGregorianCalendar date2 = DatatypeFactory.newInstance().newXMLGregorianCalendar(c); 

, die ein Datum von 2013-01-03T11:50:00.000-05:00 zurückgibt.

Ich möchte es lesen 2013-01-03 11:50:00.

Ich habe eine Reihe von Posts überprüft, die DateFormat verwenden, um eine Zeichenfolgendarstellung des Datums zu analysieren, jedoch werden meine Daten mir als Kalenderobjekt und nicht als Zeichenfolge bereitgestellt.

Ich würde einen Ansturm in die richtige Richtung schätzen, um mir zu helfen, dieses herauszufinden.

Antwort

2

Ein XMLGregorianCalendar hat eine spezifische W3C String-Darstellung, die Sie nicht ändern können.

Sie können jedoch einen Date mit SimpleDateFormat formatieren.

DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
String dateStr = dateFormat.format(cDate); 

Sie können ein Date Objekt aus einem XMLGregorianCalendar Objekt erhalten, wie folgt:

xmlCalendar.getGregorianCalendar().getDate() 
+1

brauche ich nicht ein Datum aus einem XMLGregorianCalendar, zu erhalten, sondern es setzen. Der XMLGregorianCalendar wird von einem empfangenden Webdienst benötigt. –

+0

Richtig, wenn Sie das Datum anders als das Standardformat formatieren möchten, müssen Sie ein "Date" -Objekt verwenden. Sie beginnen mit einer dieser Dateien, daher sollten Sie den XMLGregorianCalendar überhaupt nicht benötigen. –

+0

Ja, ich hatte gehofft, ich könnte vermeiden, die generierten Klassen von XMLGreg ... bis zum Datum zu bearbeiten, aber sieht so aus, als ob ich sowieso –

1

DateFormat#format nimmt einen Object Parameter. Aus dem Gedächtnis, sollte es ein Calendar Objekt akzeptieren, wenn nicht, wird es ein Date Objekt übernehmen, so dass Sie Calendar#getTime als Worst-Case-Szenario

Sie können eine Instanz von SimpleDateFormat verwenden verwenden könnten eine benutzerdefinierte Formatierung angeben. Dadurch wird sichergestellt, dass das Ergebnis für verschiedene Systeme immer gleich ist.

0

Haben Sie dieses Tutorial gesehen, das Ihnen helfen kann?

http://www.vogella.com/articles/JavaDateTimeAPI/article.html

Speicifcally dieser Code ist ein gutes Beispiel:

// Format the output with leading zeros for days and month 
SimpleDateFormat date_format = new SimpleDateFormat("yyyyMMdd"); 
System.out.println(date_format.format(cal1.getTime())); 
Verwandte Themen