gpt4 book ai didi

calendar - VTIMEZONE 在 calendar 中有何用途?为什么不只是 UTC 时间?

转载 作者:行者123 更新时间:2023-12-03 02:20:04 24 4
gpt4 key购买 nike

VTIMEZONE 在 calendar 中有何用途?

例如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

From iCalendar Documentation

VTIMEZONE: provides a grouping of component properties that defines a time zone.

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

最佳答案

<强>1。 VTIMEZONE的定义是什么?

VTIMEZONE 用于存储时区在任何给定时间点(即夏令时和标准时间)的 UTC 偏移的特定规则。

<强>2。 VTIMEZONE 有何用途?

当您想要在特定时区而不是 UTC 下格式化 iCalendar 中的各种时间戳时,可以使用它。

您可能会问:为什么不在所有地方都使用 UTC?这不是更简单吗?答案是:由于重复规则,需要时区。如果您有重复事件,并且该事件跨越夏令时/标准边界,则必须为该事件指定时区。如果您只使用 UTC,一旦您超过了夏令时/标准边界,事件的时间就会变得不正确。

2.1 这有意义吗?没有 VTIMEZONE 的icalendar对象

你的例子不正确。

示例中的 DTEND 属性引用了不存在的 VTIMEZONE 组件(“亚洲/上海”)。

DTEND;TZID=Asia/Shanghai:20170324T213000

iCalendar 解析器将查看该 TZID 参数,然后查找 TZID 属性与其匹配的 VTIMEZONE 组件。由于您的 iCalendar 对象没有这样的 VTIMEZONE,因此 iCalendar 解析器在技术上不知道如何解释该日期。 TZID 参数仅被视为唯一标识符。它本身没有任何意义。

如果您希望在特定时区下设置日期格式,但又不想在 iCalendar 对象中包含 VTIMEZONE 组件,则可以使用全局时区 ID。全局时区 ID 与普通 TZID 参数不同,因为它们以正斜杠开头:

DTEND;TZID=/Asia/Shanghai:20170324T213000

全局时区 ID 的缺点是 iCalendar 规范没有指定解析器应如何解释这些 ID。然而,在实践中,我想在所有支持全局 ID 的解析器中,大多数可能会将它们视为 Olson ID。

3.1。 VEVENT 中的时区必须与 VTIMEZONE 一致吗?

VTIMEZONE 组件中定义的时区在 iCalendar 对象中具有全局范围。因此,VEVENT 中的任何 TZID 参数都必须引用 VTIMEZONE 组件(除非它是全局时区 ID)。

3.2 我可以在part2和part3中使用其他时区来描述时间吗?

仅仅因为您的 iCalendar 对象具有 VTIMEZONE 组件,并不意味着您必须使用它。你的例子是有效的。

关于calendar - VTIMEZONE 在 calendar 中有何用途?为什么不只是 UTC 时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42919630/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com