Skip to main content

Enterprise Server 3.15 目前作为候选发布提供。

时区与 REST API

某些 REST API 端点允许通过请求指定时区信息。

某些创建新数据的请求(例如创建新的提交)允许在指定或生成时间戳时提供时区信息。

请注意,这些规则仅适用于传递给 API 的数据,而不适用于 API 返回的数据。 API 返回的时间戳采用 UTC 时间、ISO 8601 格式。

确定请求的对应时区

我们按照优先顺序应用以下规则来确定相应 API 调用的时区信息:

  1. 明确提供带有时区信息的 ISO 8601 时间戳
  2. 使用 Time-Zone 标头
  3. 使用用户的最后一个已知时区
  4. 在没有其他时区信息的情况下默认使用 UTC

明确提供带有时区信息的 ISO 8601 时间戳

对于允许指定时间戳的 API 调用,我们使用这种明确的时间戳。 这些时间戳类似于 2014-02-27T15:05:06+01:00

其中一个示例是用于管理提交的 API。 有关详细信息,请参阅“Git 提交的 REST API 终结点”。

使用 Time-Zone 标头

可以提供一个 Time-Zone 标头,该标头根据 Olson 数据库中的名称列表定义时区。

curl -H "Time-Zone: Europe/Amsterdam" -X POST http(s)://HOSTNAME/api/v3/repos/github-linguist/linguist/contents/new_file.md

这意味着当你在这个标题定义的时区做出 API 调用时,我们会生成一个时间戳。

例如,用于管理内容的 API 会为每个添加或更改生成 git 提交,并使用当前时间作为时间戳。 有关详细信息,请参阅“存储库内容的 REST API 终结点”。 此 Time-Zone 标头将确定用于生成当前时间戳的时区。

使用用户的最后一个已知时区

如果未指定 Time-Zone 标头,并且你对 API 进行经过身份验证的调用,则我们对经过身份验证的用户使用最后一个已知时区。 最新一个已知的时区在您浏览 GitHub Enterprise Server 网站时都会更新。

在没有其他时区信息的情况下默认使用 UTC

如果上述步骤未产生任何信息,我们将使用 UTC 时区。