Hallo,
ich habe ein Problem beim Umwandeln von long in XMLGregorianCalendar.
In meinem Projekt bearbeite ich einen Datumswert in verschiedenen Formaten:
Ausgabe in der Console:
Hier bekomme ich eine Differenz von + 4 Stunden, wenn ich das XMLGregorianCalendar-Objekt wieder in Mikrosekunden umwandle. Hat jemand eine Idee woher das kommen kann? 4 Stunden sind nicht so einfach durch Sommer/ Winterzeit zu erklären.
Ich weiss zwar, das die Methode "toLocaleString() als 'deprecated' eingestuft ist, aber ich habe bisher keine besser Möglichkeit für die Umwandlung gefunden.
Kann mir jemand bei diesem Problem helfen?
Vielen Dank im Voraus
pemberton
ich habe ein Problem beim Umwandeln von long in XMLGregorianCalendar.
In meinem Projekt bearbeite ich einen Datumswert in verschiedenen Formaten:
1. als XMLGregorianCalendar-Objekt in einer XML-Datei.
2. als Long (Datumswert in Millisekunden) zur Ermittlung von Zeitspannen
3. als Date zum setzen und holen des Datums im JXDatePicker
4. als String zum Anzeigen des Datums in einer Editbox (Format von XMLGregorianCalendar.toString() )
Code:
public static XMLGregorianCalendar getXMLGregorianCalendarFromLong(long mSec_)
{
try
{
// Rückgabewert
DatatypeFactory df = DatatypeFactory.newInstance();
XMLGregorianCalendar calendarXML = df.newXMLGregorianCalendar();
Date date = new Date(mSec_);
System.out.println();
System.out.println("mSec_ : "+ new Date(mSec_).toLocaleString());
System.out.println("mSec_ : "+ date.toLocaleString());
//01.06.2008 13:07:55 System.out.println(date.toLocaleString());
//0000000000111111111122222222222
//0123456789012345678901234567890
calendarXML.setYear( Integer.parseInt( date.toLocaleString().substring(6, 10) ) );
calendarXML.setMonth( Integer.parseInt( date.toLocaleString().substring(3, 5) ) );
calendarXML.setDay( Integer.parseInt( date.toLocaleString().substring(0, 2) ) );
calendarXML.setHour( Integer.parseInt( date.toLocaleString().substring(11, 13) ));
calendarXML.setMinute( Integer.parseInt( date.toLocaleString().substring(14, 16) ));
calendarXML.setSecond( Integer.parseInt( date.toLocaleString().substring(17, 19) ));
calendarXML.setTimezone( date.getTimezoneOffset()) ;
System.out.println("xmlGC : "+ new Date(calendarXML.toGregorianCalendar().getTimeInMillis()).toLocaleString());
System.out.println(" --> "+calendarXML.toString());
return calendarXML;
}
catch (Exception ex)
{
System.out.println("Fehler beim parsen des Datums."+ex.getMessage());
return null;
}
}
Ausgabe in der Console:
Code:
mSec_ : 01.06.2008 13:07:55
mSec_ : 01.06.2008 13:07:55
xmlGC : 01.06.2008 17:07:55
--> 2008-06-01T13:07:55-02:00
Hier bekomme ich eine Differenz von + 4 Stunden, wenn ich das XMLGregorianCalendar-Objekt wieder in Mikrosekunden umwandle. Hat jemand eine Idee woher das kommen kann? 4 Stunden sind nicht so einfach durch Sommer/ Winterzeit zu erklären.
Ich weiss zwar, das die Methode "toLocaleString() als 'deprecated' eingestuft ist, aber ich habe bisher keine besser Möglichkeit für die Umwandlung gefunden.
Kann mir jemand bei diesem Problem helfen?
Vielen Dank im Voraus
pemberton