【问题标题】:Calculate UTC offset at a given time from VTIMEZONE Block provided in a .ics file从 .ics 文件中提供的 VTIMEZONE 块计算给定时间的 UTC 偏移量
【发布时间】:2016-02-25 12:06:39
【问题描述】:

我的应用程序解析提供的 .ics 文件并获取 UTC 日历事件的开始和结束时间。请参阅示例 .ics 文件 下面。

开始:VCALENDAR 开始:VTIMEZONE 身份证号: 开始:标准 DTSTART:16010101T020000 TZOFFSETFROM:-0400 TZOFFSETTO:-0500 RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=1SU;BYMONTH=11 结束:标准 开始:日光 DTSTART:16010101T020000 TZOFFSETFROM:-0500 TZOFFSETTO:-0400 RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=2SU;BYMONTH=3 结束:日光 结束:VTIMEZONE 开始:事件 组织者;CN=blah:MAILTO:someone@blah.com 描述;语言=en-US: RRULE:FREQ=YEARLY;COUNT=30;INTERVAL=1;BYMONTHDAY=9;BYMONTH=4 Summary;LANGUAGE=en-US:这是摘要 DTSTART;TZID=:20160409T000000 DTEND;TZID=:20160410T000000 UID:f663243d-17f2-424a-a52c 重复 ID;TZID=:20160409T000000 优先级:5 DTSTAMP:20150701T123848Z 传输:不透明 状态:已确认 序列:0 位置;语言=en-US: 结束:事件 结束:VCALENDAR

我遇到过在 DTSTART/DTEND 中没有提到 TZID 的情况(如上面的 .ics 文件), 或者 TZID 是一些随机字符串,您无法从中找出时区。

我认为在这种情况下获取时区信息的唯一方法是解析 VTIMEZONE 块以确定 时区偏移量,然后将其应用于开始和结束时间以获取 UTC 值。

有人可以帮助我使用算法(或指向现有库)来解析 VTIMEZONE 块并获取给定时间的 UTC 偏移量。

编辑: 我正在研究python。所以一个python库会很棒。如果你也用其他语言提出建议也没关系,我需要的只是算法。我可以自己将其转换为工作代码。

【问题讨论】:

  • 您阅读过规范吗?您是否寻找适合您首选语言/平台的库?这到底是什么……?一般来说,要求图书馆推荐的问题都是题外话,除非你能给出更具体的要求并解释你已经尝试过的东西。
  • 是的,我浏览了rfc-5545,没有得到满意的答复。是的,我搜索了一个python库,没有找到。就我而言,这是一个相关的问题。如果您认为它与主题无关,请继续关闭它。

标签: calendar timezone icalendar timezone-offset


【解决方案1】:

我不知道您使用的是什么语言,但biweekly 是一个解析 iCalendar 文件的 Java 库。它还可以从VTIMEZONE 组件中解析出时区信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-06
    • 2016-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-11
    相关资源
    最近更新 更多