来自 javascript 的 EWS GetUserAvailabilityRequest - 如何设置时区信息

EWS GetUserAvailabilityRequest from javascript - How to set timezone information

虽然在 documentation 中不清楚,但很明显,soap 请求的这一块将填充与 Web 客户端所在设备的时区有关的数据 运行 上。我做出这个假设是因为大多数文档都描述了如何从 Windows 注册表中获取此信息。但是,这不适用于多平台 Web 客户端。

我的假设是否正确,即此时区数据与客户端有关 OS?

如果是这样,很容易得到JavaScript中的当前时区偏移量(偏差)。

填充与 StandardTime 和 DaylightTime 相关的元素的其余数据如何?

例如

 <SerializableTimeZone xmlns=".../types">
  <Bias>-600</Bias>
  <StandardTime>
    <Bias>0</Bias>
    <Time>03:00:00</Time>
    <DayOrder>5</DayOrder>
    <Month>3</Month>
    <DayOfWeek>Sunday</DayOfWeek>
  </StandardTime>
  <DaylightTime>
    <Bias>-60</Bias>
    <Time>02:00:00</Time>
    <DayOrder>5</DayOrder>
    <Month>10</Month>
    <DayOfWeek>Sunday</DayOfWeek>
  </DaylightTime>
</SerializableTimeZone>

我使用 TimezoneJs 来帮助获取所有时区数据。 TimezoneJs returns Olson (IANA) 风格的时区名称,但 EWS soap 请求需要 Microsoft 风格的时区名称。为了解决这个问题,我使用 unicode.org 提供的 xml 创建了一个辅助实用程序,将 IANA 时区名称映射到 MS 风格的时区名称。

您可以在此处获取 xml:http://unicode.org/repos/cldr/trunk/common/supplemental/ 有趣的文件:metazones.xml 和 WindowsZones.xml