【发布时间】:2017-08-12 16:15:21
【问题描述】:
icalendar 中的 VTIMEZONE 是做什么用的?
例如1
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Apple Inc.//Mac OS X 10.12.3//EN
CALSCALE:GREGORIAN
BEGIN:VTIMEZONE
TZID:Asia/Shanghai
BEGIN:STANDARD
TZOFFSETFROM:+0900
RRULE:FREQ=YEARLY;UNTIL=19910914T150000Z;BYMONTH=9;BYDAY=3SU
DTSTART:19890917T000000
TZNAME:GMT+8
TZOFFSETTO:+0800
END:STANDARD
BEGIN:DAYLIGHT
TZOFFSETFROM:+0800
DTSTART:19910414T000000
TZNAME:GMT+8
TZOFFSETTO:+0900
RDATE:19910414T000000
END:DAYLIGHT
END:VTIMEZONE
BEGIN:VEVENT
TRANSP:OPAQUE
LAST-MODIFIED:20170305T083916Z
UID:gjo1burcjnsib4p2j8tbbv4hh0@google.com
DTSTAMP:20170305T083916Z
LOCATION:Cell Group
DESCRIPTION:
STATUS:CONFIRMED
SEQUENCE:0
SUMMARY:Study Bible
DTSTART;TZID=Asia/Shanghai:20170324T193000
DTEND;TZID=Asia/Shanghai:20170324T213000
X-APPLE-TRAVEL-ADVISORY-BEHAVIOR:AUTOMATIC
CREATED:20160312T140632Z
RRULE:FREQ=WEEKLY;BYDAY=FR
BEGIN:VALARM
X-WR-ALARMUID:9B47E27E-9063-417E-B488-409387A3201A
UID:9B47E27E-9063-417E-B488-409387A3201A
TRIGGER;VALUE=DATE-TIME:19760401T005545Z
ACKNOWLEDGED:20161125T105826Z
X-APPLE-DEFAULT-ALARM:TRUE
ACTION:NONE
END:VALARM
END:VEVENT
END:VCALENDAR
VTIMEZONE:提供一组定义时区的组件属性。
1。 VTIMEZONE的定义是什么?
描述某个地点的冬令时和夏令时是否有规则?
2。 VTIMEZONE 是做什么用的?
我不必在 icalendar 对象中指定 VTIMEZONE 组件。相反,我将本地时间转换为 UTC 时间,并导出 icalendar 事件。
# Before
DTSTART:20170324T113000Z
DTEND:20170324T130000
# After
DTSTART;TZID=Asia/Shanghai:20170324T193000
DTEND;TZID=Asia/Shanghai:20170324T213000
2.1 这有意义吗?没有 VTIMEZONE 的 icalendar 对象
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Apple Inc.//Mac OS X 10.12.3//EN
BEGIN:VEVENT
TRANSP:OPAQUE
LAST-MODIFIED:20170305T083916Z
UID:gjo1burcjnsib4p2j8tbbv4hh0@google.com
DTSTAMP:20170305T083916Z
LOCATION:Cell Group
DESCRIPTION:
STATUS:CONFIRMED
SEQUENCE:0
SUMMARY:Study Bible
DTSTART;TZID=Asia/Shanghai:20170324T113000
DTEND;TZID=Asia/Shanghai:20170324T213000
X-APPLE-TRAVEL-ADVISORY-BEHAVIOR:AUTOMATIC
CREATED:20160312T140632Z
RRULE:FREQ=WEEKLY;BYDAY=FR
BEGIN:VALARM
X-WR-ALARMUID:9B47E27E-9063-417E-B488-409387A3201A
UID:9B47E27E-9063-417E-B488-409387A3201A
TRIGGER;VALUE=DATE-TIME:19760401T005545Z
ACKNOWLEDGED:20161125T105826Z
X-APPLE-DEFAULT-ALARM:TRUE
ACTION:NONE
END:VALARM
END:VEVENT
END:VCALENDAR
2.2 如果说得通的话,VTIMEZONE 有什么用?
3。 VTIMEZONE 和 VEVENT 之间的一致性
举个例子以 1 为例。
....
BEGIN:VTIMEZONE
TZID:Asia/Shanghai <- Part 1
.....
END:VTIMEZONE
BEGIN:VEVENT
....
DTSTART;TZID=Asia/Shanghai:20170324T193000 <- Part 2
DTEND;TZID=Asia/Shanghai:20170324T213000 <- Part 3
....
END:VEVENT
3.1。 VEVENT 中的时区必须与 VTIMEZONE 一致吗?
3.2 part2和part3的时间可以用其他时区来描述吗?
例如
....
BEGIN:VTIMEZONE
TZID:Asia/Shanghai <- Part 1
.....
END:VTIMEZONE
BEGIN:VEVENT
....
DTSTART:20170324T193000Z <- Part 2 UTC time
DTEND:20170324T213000Z <- Part 3 UTC Time
....
END:VEVENT
【问题讨论】:
标签: calendar timezone icalendar rfc5545