Ical4j / Kalender einlesen von URL - Fehler: "Unparseable date"

internet

Top Contributor
Hallo,

ich möchte gerne auf einfache Art und Weiße einen Ical Kalender von einer öffentlichen URL einlesen.
Hierzu nehme ich einen öffentlichen Kalender (siehe: https://www.officeholidays.com/subscribe/germany)

Hier die URL: https://www.officeholidays.com/ics-local-name/germany

Einlesen mache ich mit folgendem Code:

Java:
private Calendar readCalenderFromUrl() {

        System.setProperty("net.fortuna.ical4j.timezone.cache.impl", MapTimeZoneCache.class.getName());

        URL url = new URL("https://www.officeholidays.com/ics-local-name/germany");
        Calendar cal = Calendars.load(url);
        return cal;
    }

Ich bekomme aber immer einen Fehler:
net.fortuna.ical4j.data.ParserException: Error at line 14:Unparseable date: "20220602T05631Z"

Code:
<dependency>
            <groupId>org.mnode.ical4j</groupId>
            <artifactId>ical4j</artifactId>
            <version>3.0.21</version>
</dependency>

Ich habe es mal auch mit einem anderen Kalender probiert und hier bekomme ich es nicht zum Laufen.
Kann jemand helfen?
 

Robert Zenz

Top Contributor
Naja, da hat das Ding nicht unrecht, das Datum ist irgendwie falsch:

Code:
20220602T05631Z
yyyyddMMTHHmm?Z

Nur eine einstellige Sekunde zu haben ist unueblich, sage ich mal, und die Minute "63" klingt jetzt auch nicht so richtig. Ich wuerde mal sagen dass die Datei Kacke ist. Kannst du der Seite als Fehler melden, denn soweit ich das sehe ist das einfach falsch.
 
Zuletzt bearbeitet:

Robert Zenz

Top Contributor
Wenn du aber jetzt eine Loesung brauchst, wuerde ich die Datei vorher herunterladen, und dann das "CREATED" Feld einfach austauschen oder nachbearbeiten bevor man die Datei an ical4j uebergibt.
 

internet

Top Contributor
Naja, ich dachte hier gäbe es etwas standardisiertes?
Im Grund genommen möchte ich dem User die Möglichkeit geben jegliche ical Datei bei mir im System zu hinterlegen.

Anschließend wird diese eingelesen (Stream) und darauf basierend kann ich in meiner GUI dann eine Liste von diesen Daten (Termine) ausgeben...
Da muss es doch eine andere Lösung geben ist ja jetzt nicht unbedingt untypisch sowas
 

Robert Zenz

Top Contributor
Outlook kommt damit klar.
Also erstens, was Outlook macht ist mir suspekt. Ich musste mal Emails verarbeiten in einem Programm, und jedes mal wenn es eine "Problem-Email" gab, kam die von Outlook. Zweitens, natuerlich koennen die Programme das ignorieren oder nicht, oder anders verarbeiten, oder nicht, aber die iCalendar-Spezifikation sagt:

time-hour = 2DIGIT ;00-23

Damit ist ical4j im Recht, und die Datei nicht wohlgeformt.

Damit kann man jetzt entweder dafuer sorgen dass der Hersteller der Datei das aendert, und solange man darauf wartet, die Datei "vorverarbeiten" um das zu korrigieren.
 

internet

Top Contributor
Also gibt es irgendeine Möglichkeit mit diesen ParserExecption umzugehen?
Ich habe gerade mal eine andere ical - Datei versucht einzulesen:

Hier wird das so gespeichert:
Java:
TSTART:20220526T220000Z
DTEND:20220526T230000Z
END:VEVENT
BEGIN:VEVENT
UID:Termin8.6@https:test.test.com
DTSTAMP:20220602T121337Z
SUMMARY:Test (tEST, Gebucht)
DESCRIPTION:Job-ID 7\n\n\n\nMitarbeiter (2/2):\nTest, Test (Aufbau; Ge
    bucht)\nTest, Test (Aufbau; Gebucht)

Bei der der Description meckert er nun wohl rum: "Error at line 29:Invalid property name"
 

Robert Zenz

Top Contributor
Also gibt es irgendeine Möglichkeit mit diesen ParserExecption umzugehen?
Ja, du kannst die Datei vorverarbeiten.

Bei der der Description meckert er nun wohl rum: "Error at line 29:Invalid property name"
Ja, Texte duerfen nicht mehrzeilig sein, Zeilenumbrueche werden mit "\n" angegeben.

Offensichtlich halten sich viele Programme nicht so genau an die Vorgaben...musst du dann entsprechend einbauen und anpassen.
 

Oneixee5

Top Contributor
Die Properties könnten helfen:
ical4j.unfolding.relaxed=true
ical4j.parsing.relaxed=true
ical4j.validation.relaxed=true
ical4j.compatibility.outlook=true
 

internet

Top Contributor
Die Parameter helfen, vielen Dank.

Nun möchte ich das vEvent aber noch parsen... I.d.R. ist es ja mit Uhrzeit angegeben.
In dem Beispiel (siehe URL) bekomme ich es aber so:

DTSTART;VALUE=DATE:20220606

Java:
private void createBookingDate(VEvent vEvent) throws ParseException {

        DateTimeFormatter f = DateTimeFormatter.ofPattern("yyyyy-mm-dd hh:mm:ss");

        LocalDateTime startDate = LocalDateTime.parse(vEvent.getStartDate().getValue(), f);
        LocalDateTime endDate = LocalDateTime.parse(vEvent.getEndDate().getValue(), f);

        return;
    }

Wie kann ich das denn entsprechend abfangen?
 

Oneixee5

Top Contributor
vEvent.getStartDate().getDate() gibt dir ein Objekt, welches von java.util.Date erbt. Warum willst du es dann noch parsen, du kannst es ja direkt umwandeln.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Ical4j - Lazy Loading von Events? Java Basics - Anfänger-Themen 2
F MS365 Kalender lesen Java Basics - Anfänger-Themen 5
sserio Gregorianischer Kalender und dessen Tage. Java Basics - Anfänger-Themen 14
T simpler Kalender Java Basics - Anfänger-Themen 10
G Kalender Jahreszahlen Java Basics - Anfänger-Themen 6
A Kalender programmieren, ich finde meinen Fehler nicht. Java Basics - Anfänger-Themen 9
J Gerorianischer Kalender wechselt am Freitag die Woche Warum Java Basics - Anfänger-Themen 2
N Kalender - Tag addieren gibt 31. Juni zurück Java Basics - Anfänger-Themen 3
S Hinweis zu Fehler im Kalender-Code - Aufgabe 5.3 aus Grundkurs Programmieren in Java 7. Auflage Java Basics - Anfänger-Themen 4
I c++ sexagesimal kalender Java Basics - Anfänger-Themen 5
I ical - Datei auf Server ablegen und Kalender abbonieren Java Basics - Anfänger-Themen 0
C Kalender in Applet einfügen Java Basics - Anfänger-Themen 0
U Neu Julianischer Kalender Java Basics - Anfänger-Themen 2
T Kalender irrt sich Java Basics - Anfänger-Themen 8
M Kalender reloaded Java Basics - Anfänger-Themen 7
L Kalender Java Frame Java Basics - Anfänger-Themen 7
M Kalender mit Terminen Java Basics - Anfänger-Themen 24
F Problem mit selbstprogrammierten Kalender (als Übung) Java Basics - Anfänger-Themen 4
J Arrays (Kalender) Fehler im Programm Java Basics - Anfänger-Themen 2
P Date oder Kalender? Was soll man verwenden? Java Basics - Anfänger-Themen 2
K Erste Schritte Kalender selber erstellen? Java Basics - Anfänger-Themen 3
A JKomponente für Kalender Java Basics - Anfänger-Themen 5
R Kalender speichert keine Zeit Java Basics - Anfänger-Themen 2
L einfachen kalender Programmieren HA! Java Basics - Anfänger-Themen 76
M Kalender Java Basics - Anfänger-Themen 15
E Methoden zusammenfassen/Kalender erstellen Java Basics - Anfänger-Themen 13
T Einfacher Kalender Java Basics - Anfänger-Themen 17
G Kalender Bean in Netbean einbinden Java Basics - Anfänger-Themen 3
F Termine in einen kalender eintragen. Java Basics - Anfänger-Themen 11
G Kalender Von String zu boolean -- NullpointerException Java Basics - Anfänger-Themen 2
S Wie Termine/Notizen in Outlook Kalender einfügen ? Java Basics - Anfänger-Themen 3
D Gibt es einen vordefinierten Kalender in java? Java Basics - Anfänger-Themen 8
H Java Kalender systemabhängig programmieren? Java Basics - Anfänger-Themen 3
B Kalender -> Termine eintragen Java Basics - Anfänger-Themen 1
W Java Kalender Java Basics - Anfänger-Themen 6
B Kalender und Wochentagswechsel Java Basics - Anfänger-Themen 6
G The serializable class Kalender does not declare a static fi Java Basics - Anfänger-Themen 5
A Kalender mit Objekten belegen Java Basics - Anfänger-Themen 3
A kalender Java Basics - Anfänger-Themen 26
J Wie drucke ich eine Komponente wie Kalender auf dem Drucker Java Basics - Anfänger-Themen 3
G Kalender ? Java Basics - Anfänger-Themen 6
S kalender machen Java Basics - Anfänger-Themen 40
G kalender Java Basics - Anfänger-Themen 15
P Kalender Programmieren Java Basics - Anfänger-Themen 2
farbenlos Csv Datei in Java einlesen Java Basics - Anfänger-Themen 18
G JTree speichern und wieder einlesen Java Basics - Anfänger-Themen 5
T Text einlesen code was kommt dahin? Java Basics - Anfänger-Themen 1
S SeriellenPort einlesen Java Basics - Anfänger-Themen 3
I XML einlesen und Objekte bekommen Java Basics - Anfänger-Themen 2
M Daten aus .txt Datei einlesen und weiterverarbeiten Java Basics - Anfänger-Themen 80
julian0507 Wörter einlesen lassen und rückwärts ausgeben Java Basics - Anfänger-Themen 7
S JSON einlesen und benutzen Java Basics - Anfänger-Themen 5
A CSv.Datei einlesen und die werte in zweidemosional Int Array speichern Java Basics - Anfänger-Themen 9
Saiko Zeilen einer Datei einlesen Java Basics - Anfänger-Themen 3
sserio Txt Datei einlesen Java Basics - Anfänger-Themen 9
D Strings aus Excel-Datei einlesen Java Basics - Anfänger-Themen 2
julian112 Input/Output .gz bzw. .txt Datei Einlesen und Umgang mit Exceptions Java Basics - Anfänger-Themen 1
M String beim einlesen formatieren Java Basics - Anfänger-Themen 12
P Datei einlesen, nach Begriff filtern und in Datei ausgeben. Problem Standardausgabe über Konsole Java Basics - Anfänger-Themen 19
G JSP Textfeld einlesen Java Basics - Anfänger-Themen 2
M Einlesen > new Leser Java Basics - Anfänger-Themen 5
W Werte durch Konsole einlesen Java Basics - Anfänger-Themen 10
A Array einlesen und ausgeben Java Basics - Anfänger-Themen 13
K Datum einlesen und Tag, Monat und Jahr einzeln ausgeben Java Basics - Anfänger-Themen 1
K Datum einlesen und Tag, Monat und Jahr einzeln ausgeben Java Basics - Anfänger-Themen 1
KogoroMori21 Textdatei einlesen im Array (Selection Sort Algorithmus) Java Basics - Anfänger-Themen 3
S Wort einlesen Array ausgeben Java Basics - Anfänger-Themen 4
I Java String einlesen und auslesen Java Basics - Anfänger-Themen 11
A Input/Output Mehrere Csv-Dateien einlesen Java Basics - Anfänger-Themen 2
S CSV einlesen und mit Komma trennen Java Basics - Anfänger-Themen 12
CptK Richtigen Pfad beim einlesen von Datei finden Java Basics - Anfänger-Themen 2
I Java-Wort einlesen und ausgeben Java Basics - Anfänger-Themen 7
J Csv-Datei einlesen Java Basics - Anfänger-Themen 52
JD_1998 Arrays einlesen, zwischenspeichern und wieder ausgeben Java Basics - Anfänger-Themen 8
L Konstruktor für eine Map-Datei/Map-Datei einlesen Java Basics - Anfänger-Themen 5
L Datein einlesen Java Basics - Anfänger-Themen 1
O zufälliges Wort aus einer Datei einlesen Java Basics - Anfänger-Themen 32
E Input/Output Datei anhand von Dateinamen einlesen Java Basics - Anfänger-Themen 5
C Datei über relative Pfade einlesen Java Basics - Anfänger-Themen 6
A Input/Output Dateien einlesen und ausgeben Java Basics - Anfänger-Themen 7
A Klasse um daten zu einlesen Java Basics - Anfänger-Themen 26
A 2d Arrays aus txt.file einlesen Java Basics - Anfänger-Themen 16
A Textdatei mit stream einlesen Java Basics - Anfänger-Themen 2
P Datei einlesen und zurückgeben Java Basics - Anfänger-Themen 5
G String wird nach Einlesen aus Datei nicht erkannt Java Basics - Anfänger-Themen 3
M String in Scanner einlesen Java Basics - Anfänger-Themen 6
E TXT FILE EINLESEN Java Basics - Anfänger-Themen 4
M Einzelzeichen einlesen Java Basics - Anfänger-Themen 2
C (char) Array einlesen Java Basics - Anfänger-Themen 8
B HTML File einlesen inkl. Bilder? Java Basics - Anfänger-Themen 2
E Mehrere Eingabezeilen gleichzeitig einlesen Java Basics - Anfänger-Themen 7
B HTML Datei einlesen und HTML Code in String wandeln Java Basics - Anfänger-Themen 19
V Schleife für das Einlesen von Werten für int Variablen, die Bestandteil von Arrays sein sollen Java Basics - Anfänger-Themen 16
I Nur auf Abfrage von einer Text Datei einlesen Java Basics - Anfänger-Themen 11
P Text Datei einlesen und übertragen Java Basics - Anfänger-Themen 15
E Einteilung der Räume mit einlesen einer .txt datei Java Basics - Anfänger-Themen 16
P Array einlesen von Konsole Java Basics - Anfänger-Themen 8
D Eingaben in String Array einlesen Java Basics - Anfänger-Themen 12
B CSV einlesen - Parameter a) encoding b) delimiter Java Basics - Anfänger-Themen 7
R Compiler-Fehler Einlesen von Konsolenparameter funtioniert nichtmehr Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben