您正在寻找的 Windows 时区键正是:"Eastern Standard Time"
. 这涵盖了美国东部时区,包括东部标准时间和东部夏令时间。它的显示名称为"(UTC-05:00) Eastern Time (US & Canada)"
.
这实际上是我在时区标签 wiki中提到的示例之一- 如果您还没有阅读,则应该阅读。
您找到的另一个键"US Eastern Standard Time"
实际上是用于显示名称的区域"(UTC-05:00) Indiana (East)"
- 由于历史原因而被隔离,现在已过时。(如果您对原因感兴趣,请参阅关于印第安纳州时间的 Wikipedia 条目,以及Microsoft 的 KB 文章。)
如果您在 Windows 注册表中查看HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones
,您将看到有效的键。在每个键中,您将看到与每个键Display
对应的名称。这解释了当您在 Windows 中更改时区时它们的显示方式。
关于 Exchange Web 服务,在您提到的文章中,它确实谈到了如何使用密钥名称。但它也讨论了如何在元素中传递更多信息MeetingTimeZone
并使用显示名称。
如果与 Google 日历(和其他)的互操作性很重要,您可以考虑在TimeZoneName
属性中传递 IANA 时区名称 - 在本例中为America/New_York
. 您仍然需要提供<BaseOffset>
、<Standard>
和<Daylight>
元素,以便它可以在 Windows 上正常工作。请参阅该MeetingTimeZone
文章中的部分。
我应该声明我自己没有尝试过这种方法,但是从文档中可以看出,如果您提供那些TimeZoneName
对 Windows 变得不那么重要但仍然会传递的元素。
您当然应该能够使用 Microsoft 的方法通过它:
<MeetingTimeZone TimeZoneName="(GMT-05:00) Eastern Time (US & Canada)">
<BaseOffset>P0DT5H0M0.0S</BaseOffset>
<Standard>
<Offset>P0DT0H0M0.0S</Offset>
<RelativeYearlyRecurrence>
<DaysOfWeek>Sunday</DaysOfWeek>
<DayOfWeekIndex>First</DayOfWeekIndex>
<Month>November</Month>
</RelativeYearlyRecurrence>
<Time>02:00:00.0000000</Time>
</Standard>
<Daylight>
<Offset>-P0DT1H0M0.0S</Offset>
<RelativeYearlyRecurrence>
<DaysOfWeek>Sunday</DaysOfWeek>
<DayOfWeekIndex>Second</DayOfWeekIndex>
<Month>March</Month>
</RelativeYearlyRecurrence>
<Time>02:00:00.0000000</Time>
</Daylight>
</MeetingTimeZone>
我的建议是你通过传递 IANA 区域名称来稍微调整它,看看它在 Gmail 和 Google 日历中的行为是否正常:
<MeetingTimeZone TimeZoneName="America/New_York">
<BaseOffset>P0DT5H0M0.0S</BaseOffset>
<Standard>
<Offset>P0DT0H0M0.0S</Offset>
<RelativeYearlyRecurrence>
<DaysOfWeek>Sunday</DaysOfWeek>
<DayOfWeekIndex>First</DayOfWeekIndex>
<Month>November</Month>
</RelativeYearlyRecurrence>
<Time>02:00:00.0000000</Time>
</Standard>
<Daylight>
<Offset>-P0DT1H0M0.0S</Offset>
<RelativeYearlyRecurrence>
<DaysOfWeek>Sunday</DaysOfWeek>
<DayOfWeekIndex>Second</DayOfWeekIndex>
<Month>March</Month>
</RelativeYearlyRecurrence>
<Time>02:00:00.0000000</Time>
</Daylight>
</MeetingTimeZone>