Couldn't parse iCalendar / Unparseable date: ":20220331T084614Z"
paulHempel opened this issue · 2 comments
paulHempel commented
Caused by: java.text.ParseException: Unparseable date: ":20220331T084614Z"
- All my events are unable to be parsed.
- My calendar provider is posteo.de
- Happend in ICSx5 app
- Side note: My calendar URL does not end on
.ics
(unlike the example URL). Dunno if this could be a problem.
Event example:
BEGIN:VEVENT
EXDATE;VALUE=DATE:20220101
EXDATE;VALUE=DATE:20211001
CREATED;VALUE=DATE-TIME:20211003T130823Z
DTEND;VALUE=DATE:20211011
DTSTART;VALUE=DATE:20211001
TRANSP:TRANSPARENT
DTSTAMP;VALUE=DATE-TIME:20220331T084614Z
LAST-MODIFIED;VALUE=DATE-TIME:20220104T115808Z
UID:3979A421-7245-4F51-9E72-F8DF0A1BD2BE
URL;VALUE=URI:
SUMMARY:<redacted>
RRULE:FREQ=MONTHLY;INTERVAL=3;BYMONTHDAY=1
SEQUENCE:0
X-APPLE-TRAVEL-ADVISORY-BEHAVIOR::AUTOMATIC
BEGIN:VALARM
TRIGGER:-PT15H
ATTACH;ENCODING=BASE64;FILENAME=attachment-not-shared.txt;VALUE=BINARY:<redacted>
ACTION:AUDIO
X-WR-ALARMUID::D8F053D3-C614-4FDB-A217-EE607C5750EC
UID::D8F053D3-C614-4FDB-A217-EE607C5750EC
X-APPLE-DEFAULT-ALARM::TRUE
ACKNOWLEDGED::20220331T084614Z
END:VALARM
END:VEVENT
Full stack trace:
at.bitfire.ical4android.InvalidCalendarException: Couldn't parse iCalendar
at at.bitfire.ical4android.ICalendar$Companion.fromReader(ICalendar.kt:81)
at at.bitfire.ical4android.Event$Companion.eventsFromReader(Event.kt:81)
at at.bitfire.icsdroid.ui.AddCalendarValidationFragment$ValidationModel$initialize$downloader$1.onSuccess(AddCalendarValidationFragment.kt:115)
at at.bitfire.icsdroid.CalendarFetcher.fetchLocal$icsx5_62_2_0_2_standardRelease(CalendarFetcher.kt:114)
at at.bitfire.icsdroid.CalendarFetcher.run(CalendarFetcher.kt:48)
at java.lang.Thread.run(Thread.java:919)
Caused by: net.fortuna.ical4j.data.ParserException: Error at line 63:Unparseable date: ":20220331T084614Z"
at net.fortuna.ical4j.data.CalendarParserImpl.parse(CalendarParserImpl.java:172)
at net.fortuna.ical4j.data.CalendarBuilder.build(CalendarBuilder.java:197)
at net.fortuna.ical4j.data.CalendarBuilder.build(CalendarBuilder.java:185)
at at.bitfire.ical4android.ICalendar$Companion.fromReader(ICalendar.kt:79)
... 5 more
Caused by: java.text.ParseException: Unparseable date: ":20220331T084614Z"
at java.text.DateFormat.parse(DateFormat.java:362)
at net.fortuna.ical4j.model.DateTime.setTime(DateTime.java:418)
at net.fortuna.ical4j.model.DateTime.<init>(DateTime.java:349)
at net.fortuna.ical4j.model.property.DateProperty.setValue(DateProperty.java:139)
at net.fortuna.ical4j.model.property.Acknowledged.<init>(Acknowledged.java:124)
at net.fortuna.ical4j.model.property.Acknowledged$Factory.createProperty(Acknowledged.java:158)
at net.fortuna.ical4j.model.PropertyBuilder.build(PropertyBuilder.java:76)
at net.fortuna.ical4j.data.DefaultContentHandler.endProperty(DefaultContentHandler.java:159)
at net.fortuna.ical4j.data.CalendarParserImpl$PropertyParser.parse(CalendarParserImpl.java:309)
at net.fortuna.ical4j.data.CalendarParserImpl$PropertyParser.access$1100(CalendarParserImpl.java:241)
at net.fortuna.ical4j.data.CalendarParserImpl$PropertyListParser.parse(CalendarParserImpl.java:226)
at net.fortuna.ical4j.data.CalendarParserImpl$ComponentParser.parse(CalendarParserImpl.java:446)
at net.fortuna.ical4j.data.CalendarParserImpl$ComponentParser.access$900(CalendarParserImpl.java:422)
at net.fortuna.ical4j.data.CalendarParserImpl$PropertyListParser.parse(CalendarParserImpl.java:224)
at net.fortuna.ical4j.data.CalendarParserImpl$ComponentParser.parse(CalendarParserImpl.java:446)
at net.fortuna.ical4j.data.CalendarParserImpl$ComponentParser.access$900(CalendarParserImpl.java:422)
at net.fortuna.ical4j.data.CalendarParserImpl$PropertyListParser.parse(CalendarParserImpl.java:224)
at net.fortuna.ical4j.data.CalendarParserImpl.parseCalendar(CalendarParserImpl.java:128)
at net.fortuna.ical4j.data.CalendarParserImpl.parseCalendarList(CalendarParserImpl.java:194)
at net.fortuna.ical4j.data.CalendarParserImpl.parse(CalendarParserImpl.java:163)
... 8 more
Any help appreciated :)
dilyanpalauzov commented
The string 20220331T084614Z
appears on two places:
DTSTAMP;VALUE=DATE-TIME:20220331T084614Z
ACKNOWLEDGED::20220331T084614Z
The value-type of DTSTAMP is always DATE-TIME
, so there is no need for ;VALUE=DATE-TIME
there.
In ACKNOWLEDGED:
the value begins right after the first colon, so the value is indeed :20220331T084614Z
with the colon. This value is invalid.
I see two problems here: some software (calendar user agent) generated wrong ACKNOWLEDGED-property; and the server has not validated the correctness of the input.
paulHempel commented
Thanks for the quick analysis!
I'll forward this information as feedback to my provider.