MS Graph API 中的日历事件无法设置时区山区标准时间

Calendar event in MS Graph API can't set timezone Mountain Standard Time

我正在尝试构建一个 select 元素并在美国添加多个时区。

能够找到美国和加拿大的 EST、CST、PST 时区,但找不到 MST(山区标准时间,UTC-7)。

关于official document,它说timeZone 属性可以设置为Windows目前支持的任何时区。

如果我查看 windows 10 上的 date/time 设置,我可以看到 MST 时区选项。

而且如果我检查 this document,它也没有 MST 时区。

我应该只使用 Mountain Standard Time 吗?

一般来说,Microsoft Graph API 中大多数使用时区的操作都将接受任何有效的 Windows 或 IANA 时区标识符。

如果您愿意,可以随时调用 supportedTimeZones API,以获取服务器上可用的完整列表。这在建立新时区但尚未安装的情况下可能很有用,但在大多数情况下,您可以使用任何标准列表。

  • Windows 时区标识符及其显示名称的列表可以通过从 Windows 命令提示符调用 tzutil /l 获得。您也可以使用 TimeZoneInfo.GetSystemTimeZones(使用 IdDisplayName 属性)从 .NET 执行此操作。

  • 可以找到 IANA 时区标识符列表 on Wikipedia,或从其他各种来源找到。

假设您只想为美国建立时区列表(不包括美国领土),您将需要至少以下内容:

使用 Windows 个 ID:

Id                             Windows Display Name (English)
----------------------------------------------------------------------------
"Eastern Standard Time"        "(UTC-05:00) Eastern Time (US & Canada)"
"Central Standard Time"        "(UTC-06:00) Central Time (US & Canada)"
"Mountain Standard Time"       "(UTC-07:00) Mountain Time (US & Canada)"
"US Mountain Standard Time"    "(UTC-07:00) Arizona"
"Pacific Standard Time"        "(UTC-08:00) Pacific Time (US & Canada)"
"Alaskan Standard Time"        "(UTC-09:00) Alaska"
"Aleutian Standard Time"       "(UTC-10:00) Aleutian Islands"
"Hawaiian Standard Time"       "(UTC-10:00) Hawaii"

使用 IANA ID:

"America/New_York"
"America/Chicago"
"America/Denver"
"America/Phoenix"
"America/Los_Angeles"
"America/Anchorage"
"America/Adak"
"Pacific/Honolulu"

关于您在问题中提到的文档:

  • IANA 标识符列表 in the Graph API doc 不完整,恕我直言,该文档需要重写。

  • Windows 标识符列表 in this doc 故意不完整,因为它不是每个受支持时区的列表,而是 默认新Windows安装时按地区划分的时区。