已定义时出现 iCal STANDARD 或 DAYLIGHT 错误

iCal STANDARD or DAYLIGHT error when already defined

我有一个要在此处验证的 iCal 文件

https://icalendar.org/validator.html?url=https://www.youreontime.com/calendar/syncstaff/d72e6edb-90da-4cc7-86c0-16fee6f3ad2e

出现错误 必须在第 4 行附近定义至少一个标准或日光 属性

这是顶部有时区部分的文件。

BEGIN:VCALENDAR
PRODID:-//github.com/rianjs/ical.net//NONSGML ical.net 4.0//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Australia/Sydney
X-LIC-LOCATION:Australia/Sydney
END:VTIMEZONE
BEGIN:VEVENT
ATTENDEE;CN=Adriane Bews;ROLE=REQ-PARTICIPANT:MAILTO:demo@youreontime.com
DESCRIPTION:Walter Jones (Ph 12456788)  Dry off. Staff Adriane Bews
DTEND;TZID=Australia/Sydney:20200215T133500
DTSTAMP:20200215T105625Z
DTSTART;TZID=Australia/Sydney:20200215T132000
SEQUENCE:0
STATUS:TENTATIVE
SUMMARY:Walter Jones Dry off
UID:yot-10025135
END:VEVENT
END:VCALENDAR

Craig,Evan 为您指明了正确的方向。

消息的意思是如果定义了 VTIMEZONE,则必须定义 "AT LEAST ONE STANDARD OR DAYLIGHT PROPERTY"。 VTIMEZONE 是事件期间时区的完整定义 - 即如果有夏令时,则必须根据示例定义何时进行转换

  BEGIN:VTIMEZONE
  TZID:US-Eastern
  LAST-MODIFIED:19870101T000000Z
  BEGIN:STANDARD
  DTSTART:19971026T020000
  RDATE:19971026T020000
  TZOFFSETFROM:-0400
  TZOFFSETTO:-0500
  TZNAME:EST
  END:STANDARD
  BEGIN:DAYLIGHT
  DTSTART:19971026T020000
  RDATE:19970406T020000
  TZOFFSETFROM:-0500
  TZOFFSETTO:-0400
  TZNAME:EDT
  END:DAYLIGHT
  END:VTIMEZONE

我个人认为,如果能够假设自己的系统和接收系统都具有最新的 Olson 数据库时区定义,从而任何重复发生的事件都将在同一天和同一时间结束,那就太好了。但是我认为不能保证这一点,所以 VTIMEZONE 允许一个人定义一个人的系统正在使用的夏令时变化等。

许多系统可以接受没有 VTIMEZONES 的 ics 文件,但它们应该存在并正确定义。