Java Beim parsen eines Dates ist das Datum immer der 31.12.2012

furryhamster

Lt. Commander
Registriert
Okt. 2008
Beiträge
1.101
Hi,

ich habe separat ein Datum und eine Uhrzeit. Diese müssen in eine Datetime (net.fortuna.ical4j.model.DateTime --> ical) geparst werden. Wenn ich jedoch eine Uhrzeit angebe, dann ist das Datum immer der 31.12.2012. Ohne Uhrzeit der 30.12.2012. Woran kann das liegen?

Hier mal mein Code:
Code:
net.fortuna.ical4j.model.DateTime von;
net.fortuna.ical4j.model.DateTime bis;

LOG.debug("datum von: " + abwesenheit.getVonDatum());
LOG.debug("Uhrzeit: " + abwesenheit.getVonUhrzeit());

if (abwesenheit.getVonUhrzeit() != null) {
	von = new net.fortuna.ical4j.model.DateTime(abwesenheit.getVonDatum().toString("YYYY-MM-dd") + abwesenheit.getVonUhrzeit().toString("HH:mm:ss"), "YYYY-MM-ddHH:mm:ss", true);
	LOG.debug("getVOnDatum: " + abwesenheit.getVonDatum().toString("YYYY-MM-dd"));
	LOG.debug("getBisDatum: " + abwesenheit.getVonUhrzeit().toString("HH:mm:ss"));
	LOG.debug("von ist: " + von.toString());
} else {
	von = new net.fortuna.ical4j.model.DateTime(abwesenheit.getVonDatum().toString("dd-MM-YYYY"), "dd-MM-YYYY", true);
}

if (abwesenheit.getBisUhrzeit() != null) {
	bis = new net.fortuna.ical4j.model.DateTime(abwesenheit.getBisDatum().toString("YYYY-MM-dd") + "-" + abwesenheit.getBisUhrzeit().toString("HH:mm:ss"), "YYYY-MM-dd-HH:mm:ss", true);
} else {
	bis = new net.fortuna.ical4j.model.DateTime(abwesenheit.getBisDatum().toString("dd-MM-YYYY"), "dd-MM-YYYY", true);
}

Und hier ein Teil der Ausgabe:
Code:
DEBUG [Camel (camel) thread #0 - file://src/test/resources] processors.AbwesendToIcalProcessor: datum von: 2013-12-16
DEBUG [Camel (camel) thread #0 - file://src/test/resources] processors.AbwesendToIcalProcessor: Uhrzeit: 08:00:00.000
DEBUG [Camel (camel) thread #0 - file://src/test/resources] processors.AbwesendToIcalProcessor: getVOnDatum: 2013-12-16
DEBUG [Camel (camel) thread #0 - file://src/test/resources] processors.AbwesendToIcalProcessor: getBisDatum: 08:00:00
DEBUG [Camel (camel) thread #0 - file://src/test/resources] processors.AbwesendToIcalProcessor: von ist: 20121231T080000Z
 
Das liebe DateTime-Thema ;-)

Benutze lieber:
von = new net.fortuna.ical4j.model.DateTime(time);


"time" ist ein long und muss noch berechnet werden.


Kleine Anmerkung zu deinem Code:
Beim Pattern würde ich immer kleine "y" und Leerzeichen zwischen Datum und Uhrzeit verwenden: "yyyy-MM-dd HH:mm:ss". Und die Zeitzone sollte auch gesetzt werden.
 
Zuletzt bearbeitet:
Ich könnte mir vorstellen, dass du zwischen Datum und Uhrzeit nur ein Leerzeichen einfügen muss (und entsprechend das Pattern ändern).
 
T3rm1 schrieb:
Ich könnte mir vorstellen, dass du zwischen Datum und Uhrzeit nur ein Leerzeichen einfügen muss (und entsprechend das Pattern ändern).

Das habe ich ja noch angemerkt.
Grundsätzlich ist das DateTime-Thema immer problematisch. Leider kommt man nicht immer daran vorbei. Joda wäre meine Empfehlung!
 
Danke für eure Hilfe. Es lag nicht am Leerzeichen sondern tatsächlich daran dass ich YYYY statt yyyy verwendet habe. Habe es mit und ohne Leerzeichen probiert und auch ohne ging es weiterhin.

Ein (joda) LocalTime wird mir durch die Funktion bereits geliefert. Das Problem ist, dass ical4j zwingend sein eigenes DateTime haben will. Zumindest habe ich noch keine Möglichkeit gefunden das Start/Ende/LastModified Date mit einem LocalDateTime zu setzen.
 
Zurück
Oben