Skip to main content

タイムゾーンと 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 ヘッダーの使用

Olson データベースの名前の一覧に従ってタイムゾーンを定義する Time-Zone ヘッダーを指定できます。

curl -H "Time-Zone: Europe/Amsterdam" -X POST https://api.github.com/repos/github-linguist/linguist/contents/new_file.md

つまり、このヘッダーが定義するタイムゾーンで API 呼び出しが行われた時のタイムスタンプが生成されます。

たとえば、コンテンツを管理するための API によって、追加または変更ごとに git コミットが生成され、タイムスタンプとして現在の時刻が使用されます。 詳しくは、「リポジトリ コンテンツの REST API エンドポイント」をご覧ください。 Time-Zone ヘッダーは、現在のタイムスタンプの生成に使用するタイムゾーンを決定します。

ユーザが最後に認識されたタイムゾーンを使用する

Time-Zone ヘッダーが指定されておらず、API への認証された呼び出しを行う場合、認証されたユーザーが最後に認識されたタイムゾーンが使用されます。 最後に認識されたタイムゾーンは、GitHub Web サイトを閲覧するたびに更新されます。

他のタイムゾーン情報を含まない UTC をデフォルトにする

上記の手順で情報が得られない場合は、UTC をタイムゾーンとして使用します。