77 lines
2.5 KiB
Plaintext
77 lines
2.5 KiB
Plaintext
RFC5545
|
|
-------
|
|
https://www.rfc-editor.org/rfc/rfc5545
|
|
|
|
The iCalendar object is organized into individual lines of text,
|
|
called content lines. Content lines are delimited by a line break,
|
|
which is a CRLF sequence (CR character followed by LF character).
|
|
|
|
Lines of text SHOULD NOT be longer than 75 octets, excluding the line
|
|
break. Long content lines SHOULD be split into a multiple line
|
|
representations using a line "folding" technique. That is, a long
|
|
line can be split between any two characters by inserting a CRLF
|
|
immediately followed by a single linear white-space character (i.e.,
|
|
SPACE or HTAB). Any sequence of CRLF followed immediately by a
|
|
single linear white-space character is ignored (i.e., removed) when
|
|
processing the content type.
|
|
|
|
For example, the line:
|
|
|
|
DESCRIPTION:This is a long description that exists on a long line.
|
|
|
|
Can be represented as:
|
|
|
|
DESCRIPTION:This is a lo
|
|
ng description
|
|
that exists on a long line.
|
|
|
|
The process of moving from this folded multiple-line representation
|
|
to its single-line representation is called "unfolding". Unfolding
|
|
is accomplished by removing the CRLF and the linear white-space
|
|
character that immediately follows.
|
|
|
|
When parsing a content line, folded lines MUST first be unfolded
|
|
according to the unfolding procedure described above.
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
Observation of different ics files from different sources
|
|
---------------------------------------------------------
|
|
|
|
ICS files from Microsoft Outlook differ from those that were created by Gnome Evolution.
|
|
The order of "fields" seems not be standardized and differs between every application.
|
|
|
|
|
|
Evolution
|
|
---------
|
|
all line endings are \r\n
|
|
|
|
all day event:
|
|
DTSTART;VALUE=DATE:20230908
|
|
DTEND;VALUE=DATE:20230909
|
|
|
|
an all day event can span over multiple days and look like this:
|
|
DTSTART;VALUE=DATE:20230911^M$
|
|
DTEND;VALUE=DATE:20230916^M$
|
|
|
|
The DTEND of an all day event is exclusively, it is not an all day event anymore!
|
|
|
|
appointment:
|
|
DTSTART;TZID=/freeassociation.sourceforge.net/Continent/City:
|
|
20230909T090000
|
|
DTEND;TZID=/freeassociation.sourceforge.net/Continent/City:
|
|
20230909T093000
|
|
|
|
appointments can also span over multiple days:
|
|
DTSTART;TZID=/freeassociation.sourceforge.net/Europe/Berlin:
|
|
20230913T230000
|
|
DTEND;TZID=/freeassociation.sourceforge.net/Europe/Berlin:
|
|
20230914T040000
|
|
|
|
SEQUENCE is the number of times the event was modified.
|
|
Evolution sets this to 2 after it has been generated.
|
|
|
|
Appointments include the continent and city of the used time zone.
|
|
|
|
"DESCRIPTION:" is an optional field.
|