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

iCalendar文件中的时区问题

阳勇
2023-03-14

我有这个iCal文件:

BEGIN:VCALENDAR
METHOD:REQUEST
PRODID:Test
VERSION:2.0
BEGIN:VTIMEZONE
TZID:TestZone
BEGIN:STANDARD
DTSTART:20130509T120000
RDATE:20130509T120000
TZOFFSETFROM:-0000
TZOFFSETTO:-0000
END:STANDARD
END:VTIMEZONE
BEGIN:VEVENT
DTSTART;TZID=TestZone:20130509T120000
DTEND;TZID=TestZone:20130509T130000
SUMMARY:Hi! You have set a appointment with us!
ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE:MAILTO:foo@gmail.com.br
ORGANIZER:MAILTO:foo@gmail.com
LOCATION:Test Street
DESCRIPTION:Appointment
SEQUENCE:0
PRIORITY:5
CLASS:PUBLIC
STATUS:CONFIRMED
TRANSP:OPAQUE
BEGIN:VALARM
ACTION:DISPLAY
DESCRIPTION:REMINDER
TRIGGER;RELATED=START:-PT00H15M00S
END:VALARM
END:VEVENT
END:VCALENDAR

但是当我把它载入我的GMAIL时,它说日历设置为上午10点到11点

如果我的VTIMEZONE配置没有设置任何偏移,为什么会发生这种情况?如何在我的日历中获得实际的DTSTART和DTEND时间?

共有1个答案

张亦
2023-03-14

RFC在这里:https://www.rfc-editor.org/rfc/rfc5545

必须使用定义偏移的TZID指定本地时间。

例子:

DTSTART;TZID=America/New_York:19970714T133000

您需要在ics文件中使用VTIMEZONE组件。

BEGIN:VTIMEZONE
TZID:America/New_York
LAST-MODIFIED:20050809T050000Z
BEGIN:DAYLIGHT
DTSTART:19670430T020000
RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=-1SU;UNTIL=19730429T070000Z
TZOFFSETFROM:-0500
TZOFFSETTO:-0400
TZNAME:EDT
END:DAYLIGHT
BEGIN:STANDARD
DTSTART:19671029T020000
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=20061029T060000Z
TZOFFSETFROM:-0400
TZOFFSETTO:-0500
TZNAME:EST
END:STANDARD
END:VTIMEZONE

这些示例取自RFC 5545

 类似资料:
  • iCalendar 项目是 Ruby 语言提供对 iCalendar (RFC-2445) 格式的支持,用于 .ics 格式的生成和解析。该格式用于 Apple ical, Mozilla Sunbird, Evolution 等。

  • 我在时区面临一个问题。现在我正在从客户端保存时区,并将所有日期时间存储在UTC中。它工作正常,但当我试图将UTC的日期时间转换为CST、EST、EDT等时区后,它会显示错误的数据。 问题-假设我在美国东部夏令时晚上10点做了任何任务,并且它将在凌晨2点(按照UTC)保存在DB中,但当我尝试获取一天的数据并通过当前UTC日期时。 我的问题是,如果我试图获取一天的数据,比如从美国东部时间午夜11点到当

  • 在edge中,我正在访问一个JSP页面,该页面会返回一个文件。它在chrome中工作得很好,但在Edge和Internetexplorer中,我会将mime类型附加到文件名中。 这是响应标头: Edge要求我保存文件,文件名是 persistenceIDs.xlsx.vnd.openxmlformats-officedocument.spreadsheetml.sheet 有什么想法吗?

  • 问题内容: 我正在寻找一个库来处理Java中的iCalendar数据。 首选具有良好对象模型的开源,文档完善的实现。iCal解析功能对我来说并不重要,但仍然很不错。 有人有建议吗? 问题答案: 去年,我在iCal4j(简介)上取得的成功有限。 在Java社区中,这似乎是进行医学工作的相当流行的选择。 如果我没记错的话,乍一看,API可能会使您感到困惑。但是,从长远来看,这是非常可靠的。 祝你好运,

  • 问题内容: 我正在尝试通过访问文件并更改默认的PHP时区为 至 但是,当我尝试在下查看当前时区时,时区跟随时区。 我尝试停止并重新启动Apache服务器,但是似乎并没有更改设置。 在此过程中我缺少什么吗? PS:我正在XAMPP下使用PHP 5.6.8。 问题答案: 我尝试了发布的所有其他可能的解决方案,但是都没有帮助。这是帮助我保存时区设置的原因: 1)转到页面并搜索并打开该部分下提到的文件。

  • 我正在阅读“Unix环境中的高级编程”,在dection 5.5,P150中,它说: 1、关闭文件之前,将刷新所有缓冲输出数据。任何可能被缓冲的输入数据都会被显示 2。当进程正常终止时,所有带有未写入缓冲数据的标准I/O流都将被刷新。。。 在1中,这是否意味着当我使用fclose()关闭流时,缓冲的输入将被释放,以便某些数据不会写入文件中。如果没有,“文件已关闭”是什么意思? 在2中,“未写入的缓