outlook - 如何让 ics 文件调整为当地时间而不是更改时间
问题描述
我正在开发一个调度应用程序,该应用程序利用 ics 文件在 Outlook 中设置约会,我遇到的问题是约会时间根据时区而变化,我也不想要它。例如,我想从中部时间上午 11 点到中午设置约会,ICS 将更改以适应东部时区,并从中午到下午 1 点进行。这是我的 ICS 文件的样子。我尝试在 TZID 中指定时区,但它总是会调整。
BEGIN:VCALENDAR
VERSION:2.0
METHOD:REQUEST
BEGIN:VEVENT
ATTENDEE;CN=email<email@email.org>;RSVP=TRUE:mailto:email@email.org
CLASS:PUBLIC
CREATED:20201007T114658Z
DESCRIPTION:
DTEND;TZID="Central Standard Time":20201007T120000
DTSTAMP:20201007T114908
DTSTART;TZID="Central Standard Time":20201007T110000
LOCATION:Unknown
ORGANIZER;CN="Appointment":mailto:AppointmentsManager@email.org
PRIORITY:5
SEQUENCE:1
SUMMARY;LANGUAGE=en-us:east
TRANSP:OPAQUE
UID:X9053866f41994acda100ded7fb305ebe
BEGIN:VALARM
TRIGGER:-PT1H
ACTION:DISPLAY
DESCRIPTION:Reminder
END:VALARM
END:VEVENT
END:VCALENDAR
解决方案
您的 ICS 文件没有 VTIMEZONE 组件。如果为事件的开始/结束时间指定 TZID,则必须创建相应的 VTIMEZONE 组件来提供该时区的定义。
或者,您可以将开始/结束时间转换为 UTC,这意味着您不需要 TZID 参数:
DTEND:20201007T170000Z
DTSTART:20201007T160000Z
另一种选择:在 TZID 参数中使用 Olsen 时区 ID,并在其前面加上斜杠。但是,这不能保证适用于所有邮件客户端。
DTEND;TZID="/America/Chicago":20201007T120000
DTSTART;TZID="/America/Chicago":20201007T110000
推荐阅读
- android - 如何处理 JSON OBJECT,其中不知道对象的编号及其键名
- c++ - 有没有一种明智的方法可以从位集中提取最低有效数字?
- android - 在 onMessageReceived 中获取推送通知数据但不显示推送通知
- java - mpandroidchart 数据重复
- opencv - 提取奇数行并将它们保存为新矩阵
- matlab - MATLAB imread 将彩色 GIF 读取为灰度
- r - 从指示范围的列中替换按年份命名的有序列中的值
- docker - Kubectl 无法从私有 gcr.io 存储库中提取 docker 映像
- css - CSS伪元素如何改变颜色
- python - 授予 AD 组权限以在 Python 中管理另一个 AD 组