Google 日历错误地从 .ics 文件导入事件
Google Calendar importing events from .ics file incorrectly
因此,我正在使用 Library 将活动日程表转换为 ics/iCal 文件。我添加了两个事件。生成的文件是这样的:-
BEGIN:VCALENDAR
VERSION:2.0
BEGIN:VEVENT
UID:icsGen-whatThe
CLASS:PUBLIC
DESCRIPTION:This is a thirty minut event
DTSTART;VALUE=DATE:20171206T173030
DTEND;VALUE=DATE:20170612T180000
LOCATION:Nome, AK
SUMMARY;LANGUAGE=en-us:Demo Event
TRANSP:TRANSPARENT
END:VEVENT
BEGIN:VEVENT
UID:icsGen-whatthehell
CLASS:PUBLIC
DESCRIPTION:This is a thirty minut event
DTSTART;VALUE=DATE:20171206T183030
DTEND;VALUE=DATE:20170612T193030
LOCATION:Atlanta, AK
SUMMARY;LANGUAGE=en-us:Dummy Event
TRANSP:TRANSPARENT
END:VEVENT
END:VCALENDAR
现在,事件正在成功导入,但问题是它们正在作为 全天 事件导入。他们不遵循文件中提到的实际时间。
我还通过在线验证器传递了这个文件,并抛出了一个错误,说 DTSTAMP
未定义。所以我自己将该字段添加到文件中,但结果仍然相同。我不明白这是怎么回事。请帮我。谢谢
你可以参考这个related thread。
也许您是通过 URL 添加此日历而不是作为文件导入。也许时区在数据中没有正确定义,所以最终效果是事件时间被视为浮动时间,并且将简单地绑定到 Gcal 中新日历的默认时区,即 UTC(无夏令时),因为 GCal 不允许您在添加新日历时指定日历的时区 URL。
您的选择是在您的帐户中使用您的时区创建一个新的辅助日历,然后在“设置”>“日历”>“导入日历”下将 URL 导入该日历,然后时间应绑定到目标日历的时区。
您正在使用全天的 VALUE=DATE,请尝试使用 VALUE=DATETIME。
此外,您没有使用时区并且没有 'Z'。如果您的日期是 UTC 时间,请添加 Z。如果不是,则使用 olson 数据库中可接受的 tzcode 添加时区。这很可能只会影响您是否得到正确的时间。
如果您在遇到问题时回头参考 RFC5545 规范,它可能会有所帮助。
Google 过去常常直接拒绝大量无效的 ics 文件,但我想它现在正试图以某种方式理解它们。验证器不会捕获所有内容。
因此,我正在使用 Library 将活动日程表转换为 ics/iCal 文件。我添加了两个事件。生成的文件是这样的:-
BEGIN:VCALENDAR
VERSION:2.0
BEGIN:VEVENT
UID:icsGen-whatThe
CLASS:PUBLIC
DESCRIPTION:This is a thirty minut event
DTSTART;VALUE=DATE:20171206T173030
DTEND;VALUE=DATE:20170612T180000
LOCATION:Nome, AK
SUMMARY;LANGUAGE=en-us:Demo Event
TRANSP:TRANSPARENT
END:VEVENT
BEGIN:VEVENT
UID:icsGen-whatthehell
CLASS:PUBLIC
DESCRIPTION:This is a thirty minut event
DTSTART;VALUE=DATE:20171206T183030
DTEND;VALUE=DATE:20170612T193030
LOCATION:Atlanta, AK
SUMMARY;LANGUAGE=en-us:Dummy Event
TRANSP:TRANSPARENT
END:VEVENT
END:VCALENDAR
现在,事件正在成功导入,但问题是它们正在作为 全天 事件导入。他们不遵循文件中提到的实际时间。
我还通过在线验证器传递了这个文件,并抛出了一个错误,说 DTSTAMP
未定义。所以我自己将该字段添加到文件中,但结果仍然相同。我不明白这是怎么回事。请帮我。谢谢
你可以参考这个related thread。
也许您是通过 URL 添加此日历而不是作为文件导入。也许时区在数据中没有正确定义,所以最终效果是事件时间被视为浮动时间,并且将简单地绑定到 Gcal 中新日历的默认时区,即 UTC(无夏令时),因为 GCal 不允许您在添加新日历时指定日历的时区 URL。
您的选择是在您的帐户中使用您的时区创建一个新的辅助日历,然后在“设置”>“日历”>“导入日历”下将 URL 导入该日历,然后时间应绑定到目标日历的时区。
您正在使用全天的 VALUE=DATE,请尝试使用 VALUE=DATETIME。
此外,您没有使用时区并且没有 'Z'。如果您的日期是 UTC 时间,请添加 Z。如果不是,则使用 olson 数据库中可接受的 tzcode 添加时区。这很可能只会影响您是否得到正确的时间。
如果您在遇到问题时回头参考 RFC5545 规范,它可能会有所帮助。 Google 过去常常直接拒绝大量无效的 ics 文件,但我想它现在正试图以某种方式理解它们。验证器不会捕获所有内容。