这篇文章:
http://msdn.microsoft.com/en-us/library/exchange/bb738399(v=exchg.80).aspx
在“使用TimeZoneNames的注册表项名称”部分中告诉我,当我可以在Exchange中创建日历项目时,我可以将其传递给时区的名称。这有点工作,但我如何命名“东部夏令时”?
仅接受“美国东部标准时间”有效。在我的工作中,我安排了一些事情,例如14:00,当它显示在我的Google日历中时,我看到它在美国东部时间15:00显示,所以它使用了我传入的EST时区。问题是它发送了提醒电子邮件时间显示在“美国东部标准时间”中。
When: Friday, August 30, 2013 2:00 PM-3:00 PM. US Eastern Standard Time
... rest of email ...
我不希望那样的文字。它应该说“美国东部夏令时”或类似的东西。
soap请求包含XML,如:
<t:CalendarItem xmlns="http://schemas.microsoft.com/exchange/services/2006/types">
...
<Start>2013-08-30T14:00:00</Start>
<t:MeetingTimeZone TimeZoneName="US Eastern Standard Time"></t:MeetingTimeZone>
<t:CalendarItem>
这是Exchange Server 2007,SP1。
以下是Gmail中电子邮件的图片。 (时间与我上面的例子略有不同,抱歉)。约会时间是正确的,但它在电子邮件正文中称之为“东部标准时间”,这是不对的 - 它应该是“东部夏令时”或类似的东西。 (请注意,该行是Exchange Server生成的电子邮件正文的一部分,它不是由Gmail构成的。)
答案 0 :(得分:1)
您正在寻找的Windows时区键正是:"Eastern Standard Time"
。这涵盖美国东部时区,包括 东部标准时间和东部夏令时。它的显示名称为"(UTC-05:00) Eastern Time (US & Canada)"
。
这实际上是我在timezone tag wiki中提到的一个例子 - 如果你还没有,你应该阅读。
您找到的另一个密钥"US Eastern Standard Time"
实际上是显示名称为"(UTC-05:00) Indiana (East)"
的区域 - 由于历史原因而被隔离,现在已过时。 (如果您对原因感兴趣,请参阅Time in Indiana上的维基百科条目和Microsoft's KB article on this。)
如果您在HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones
查看Windows注册表,您将看到有效密钥。在每个密钥中,您将看到与每个密钥对应的Display
名称。这解释了在Windows中更改时区时它们的显示方式。
关于Exchange Web服务,在the article you mentioned中,它确实讨论了如何使用密钥名称。但它也讨论了如何在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>