【问题标题】:ics file issuesics文件问题
【发布时间】:2013-04-19 22:52:29
【问题描述】:

我有一个这样的示例 ics 文件

BEGIN:VCALENDAR
VERSION:1.0
BEGIN:VEVENT
DTSTART;TZID=America/New_York:20120328T073000
DTEND;TZID=America/New_York:20120328T093000
SUMMARY:Test EVENT
LOCATION:Test Location
DESCRIPTION:Test Description
PRIORITY:3
END:VEVENT
END:VCALENDAR

导入到 Google 日历时可以正常工作,但在 Outlook 中时间会延迟 2 小时。可能是什么问题?

问候, 尼尔

【问题讨论】:

标签: outlook icalendar


【解决方案1】:

为了确保行为符合您的期望,您需要在“VTIMEZONE”日历组件中定义您的 tzid。

https://www.rfc-editor.org/rfc/rfc5545 §3.2.19。时区标识符 此属性参数指定唯一标识“VTIMEZONE”日历组件的文本值

3.6.5.  Time Zone Component
Component Name:  VTIMEZONE
Purpose:  Provide a grouping of component properties that defines a time zone.

在你的日历上(在 vevent 之前)添加这样的东西就可以了:

BEGIN:VTIMEZONE
TZID:America/New_York
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

【讨论】:

  • 亲爱的 oberron,我的理解是 VTIMEZONE 定义了一个时区,以防时区定义与接收系统上的默认值不同(例如,另一个过时的夏令时更改等)。如果如上所述在日期中使用标准时区代码,日历应用程序应该能够充分处理日期。
  • 我同意这是常识,但鉴于 RFC5545 规定 3.2.19 TZID “注意:本文档未定义时区标识符的命名约定。实施者可能希望使用定义的命名约定现有的时区规范,例如公共域 TZ 数据库 [TZDB]。全球唯一时区标识符的规范 [...]" 假设所有开发人员正在做的事情都是常见的,这可能会采取冒险的方式理智(或者也许常识已经被尖头发的老板推翻了:))
猜你喜欢
  • 1970-01-01
  • 2022-11-10
  • 1970-01-01
  • 1970-01-01
  • 2012-06-20
  • 1970-01-01
  • 2023-04-07
  • 2012-07-19
  • 1970-01-01
相关资源
最近更新 更多