Google Calendar .ics导入异常:起止时间相同事件导入后时长异常
解决Google Calendar导入仅含开始时间事件的问题
这个问题的核心在于Google Calendar对缺少结束时间/时长的ICS事件的默认处理逻辑——当.ics文件里的VEVENT块没有指定DTEND(结束时间)或DURATION(时长)时,它会自动给事件分配1小时的默认持续时间,这就是你导入后结束时间多了1小时的原因。
要导入一个起止时间完全相同的瞬时事件,你只需要修改导出的.ics文件,给VEVENT块添加明确的结束时间或0秒时长即可,两种方法任选其一:
方法1:添加与开始时间一致的DTEND字段
直接在DTSTART下方新增一行DTEND,值和DTSTART完全相同。修改后的事件代码如下:
BEGIN:VEVENT DTSTART:20191119T113000 DTEND:20191119T113000 DTSTAMP:20191118T112421 UID:0ffjlmpcarr13se1n2qkgv68iq@google.com CREATED:20191118T112249 DESCRIPTION: LAST-MODIFIED:20191118T112249 LOCATION: SEQUENCE:0 STATUS:CONFIRMED SUMMARY:one day only startTime TRANSP:OPAQUE END:VEVENT
方法2:添加0秒时长的DURATION字段
另一种方式是在DTSTART下方新增DURATION:PT0S(表示0秒时长),代码如下:
BEGIN:VEVENT DTSTART:20191119T113000 DURATION:PT0S DTSTAMP:20191118T112421 UID:0ffjlmpcarr13se1n2qkgv68iq@google.com CREATED:20191118T112249 DESCRIPTION: LAST-MODIFIED:20191118T112249 LOCATION: SEQUENCE:0 STATUS:CONFIRMED SUMMARY:one day only startTime TRANSP:OPAQUE END:VEVENT
修改完成后再重新导入.ics文件,Google Calendar就会识别这是一个起止时间相同的事件,不会自动添加1小时的持续时间了。
如果需要批量处理多个这类事件,可以用支持正则替换的文本编辑器(比如VS Code、Sublime Text),通过正则查找DTSTART:(\d+T\d+),替换为DTSTART:$1\nDTEND:$1来快速批量添加结束时间。
内容的提问来源于stack exchange,提问作者Takhtak Team
相关产品推荐
相关产品推荐

