示例
问题
如果我希望奥地利时区“获胜”,iCalender文件会是什么样子?根据RFC的标准,这可能吗?如果奥地利时区“获胜”,时间就会改变,视频通话将在10月30日晚1小时:
仅仅像这样在DTSTART
中包含时区就足够了吗?如果是,是哪个RFC定义的?
BEGIN:VCALENDAR
BEGIN:VEVENT
DTSTART;TZID=Europe/Vienna:20221029T140000
RRULE:FREQ=DAILY;COUNT=2
END:VEVENT
END:VCALENDAR
如果有一个RFC定义了iCalendar文件的外观,那么是否也有一个RFC定义每个实现都必须计算这个iCalendar文件的单个日期: 13:00 UTC,14:00在奥地利,18:30在DST变化发生时?
发布于 2022-11-24 09:44:50
Time Zone Identifier
在section-3.2.19 of RFC5545中定义。
您给出的示例适用于DTSTART中的TZID。见同一节3.2.19中的评论
此参数TZID必须在"DTSTART“、"DTEND”、“到期”、"EXDATE“和"RDATE”属性上指定,如果指定了日期-时间或时间值类型,并且该值既不是UTC也不是“浮动”时间.以下是此属性参数的示例:DTSTART;TZID=America/纽约:19980119T020000 DTEND;TZID=America/纽约:19980119T030000
应该注意的是,标准要求在VTIMEZONE
组件中的同一个文件中定义TZID。
必须为iCalendar对象中指定的每个唯一"TZID“参数值指定一个单独的"VTIMEZONE”日历组件。
因此,对TZID的隐式引用通常有效,但不符合标准。
标准没有指定客户端必须计算the single dates for this iCalendar file at 13:00 UTC, 14:00 in Austria and 18:30 in India as soon as the DST change occurs?
,而是客户端必须计算事件发生时的函数,在哪个时区中定义时区,然后将其与本地时间进行比较,看看它们是否匹配。
查看它的更简单的方法是,客户端计算UTC时间内所有事件的日期时间,同时考虑到它所定义的TZID,并检查当前时间与UTC之间是否需要触发警报。
https://stackoverflow.com/questions/74509715
复制相似问题