当前位置: 首页 > 知识库问答 >
问题:

从. ics文件中提供的VTIMEZONE Block计算给定时间的UTC偏移量

怀刚毅
2023-03-14

我的应用程序解析提供的.ics文件,并以UTC为单位获取日历事件的开始和结束时间。请参见下面的example.ics文件。

BEGIN:VCALENDAR
BEGIN:VTIMEZONE
TZID:
BEGIN:STANDARD
DTSTART:16010101T020000
TZOFFSETFROM:-0400
TZOFFSETTO:-0500
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=1SU;BYMONTH=11
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:16010101T020000
TZOFFSETFROM:-0500
TZOFFSETTO:-0400
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=2SU;BYMONTH=3
END:DAYLIGHT
END:VTIMEZONE
BEGIN:VEVENT
ORGANIZER;CN=blah:MAILTO:someone@blah.com
DESCRIPTION;LANGUAGE=en-US:
RRULE:FREQ=YEARLY;COUNT=30;INTERVAL=1;BYMONTHDAY=9;BYMONTH=4
SUMMARY;LANGUAGE=en-US: This is summary
DTSTART;TZID=:20160409T000000
DTEND;TZID=:20160410T000000
UID:f663243d-17f2-424a-a52c
RECURRENCE-ID;TZID=:20160409T000000
PRIORITY:5
DTSTAMP:20150701T123848Z
TRANSP:OPAQUE
STATUS:CONFIRMED
SEQUENCE:0
LOCATION;LANGUAGE=en-US:
END:VEVENT
END:VCALENDAR

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

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

有人能帮我分析VTIMEZONE块并在给定时间获得UTC偏移量的算法(或指向现有库)吗。

编辑:我正在研究python。因此,一个python库将是非常棒的。如果你也用其他语言建议也可以,我只需要算法。我可以自己把它转换成工作代码。

共有1个答案

乜昆
2023-03-14

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

 类似资料:
  • 问题内容: MySQL中有没有一种方法可以计算任何时区的偏移量?例如,要获取时区中的本地时间。我想做的是计算该时区的偏移量,并将该偏移量添加到GMT以获得本地时间。 问题答案: 如果要计算某个时区(例如,美国/温哥华)与UTC的时差,则可以按照以下步骤进行操作: 为此,您首先需要按照以下概述将时区信息加载到mysql中:http : //dev.mysql.com/doc/refman/5.0/e

  • 所以基本上我需要做的就是想办法从2013-07-30T00:00:000000+11:00中提取出+11:00。请救命!

  • 环境:PHP 7.3.13RC1;CentOS 7.7.1908;服务器时区“欧洲/柏林” 观察结果: 以下PHP脚本: 此输出中的结果: 鉴于我希望看到以下输出: 区别在于第二个日期的输出。UTC时间缩短一小时(22:01:00而不是21:01:00)。 我在这里不知所措。我试图在php.ini内设置一个默认时区,但无济于事。 使用“日期”和“日期-u”给了我正确的时间。 timedatectl

  • 问题内容: 嘿,我正在尝试打开文件,仅从偏移量读取一定长度!我阅读了以下主题: 如何使用Java中的文件中的特定行号读取特定行? 在那儿,它说在不读取之前就不可能读取某行,但是我想知道字节! 是否可以从已知偏移量读取某些字节? 问题答案: RandomAccessFile提供一个功能:

  • 问题内容: 我有一个文件,文件的前4个字节是魔术,例如。我将如何获得这些数据? 我以为会是这样的: 输出: 可惜这对我不起作用。我找不到获取特定值的方法。 有没有人看到解决此问题的任何方法? 问题答案: 使用到位置,你想从阅读和阅读完整的阵列。 代码的问题在于,当您以读写模式创建文件时,文件指针很可能指向文件末尾。使用方法定位。 您也可以使用此方法,但是offset和length对应 于数组 中开

  • 我有下面的代码来计算偏移量,这里我在EST时区机器上执行下面的代码,其偏移量为-18000秒,即UTC-5.00 请注意,由于一些限制,我不能使用,这里要提到的限制很长。所以我用下面的逻辑从localtime epoch减去GMT epoch,如下所示,它完美地返回了偏移量。 现在,我想在这里假设DST(日光节约)的情况,偏移量为-14400秒,即UTC-4.00。由于EST时区DST(日光节约)