Hourora

キーボードショートカット

/
都市を検索
H
12時間/24時間表示を切り替え
S
秒の表示/非表示
T
テーマ:昼、夜、自動
P
地球の回転を一時停止/再開
?
この一覧
JA

開発者向け

無料のタイムゾーンAPI

Houroraを動かしているのと同じエンジンを、シンプルなJSONで。世界中の時刻、夏時間を考慮した変換、すべてのIANAタイムゾーンとその時刻の切り替え。キーも登録も不要です。

概要

ベースURL
https://hourora.app/api/v1
形式
JSON(UTF-8)、GETリクエストのみ
認証
なし:キー、登録、Cookieは不要
CORS
すべてのオリジンに開放されているため、ブラウザから呼び出せます
レート制限
クライアントごとに毎分120リクエスト
時刻データ
IANA tzdata 2026e(Houroraがコンパイル)
機械可読な仕様
OpenAPI 3.1 ドキュメント

ライブで試す

例を選ぶかパスを編集して送信してください。リクエストはブラウザから直接APIに送られます。

レスポンス

ここにレスポンスが表示されます。

エンドポイント

すべてのエンドポイントはGETにJSONで応答します。時刻はISO 8601形式、オフセットはUTCから東向きの分数(冬のニューヨークは−300)で、テキスト(−05:00)でも表記されます。

現在時刻

GET/api/v1/time

タイムゾーンまたは都市の現在時刻:現地時刻、UTCオフセット、略称、夏時間、次の時刻の切り替え。パラメーターなしの場合はUTC。

パラメーター

名前意味
tz任意IANAタイムゾーン名(例:Europe/London)。Asia/Calcuttaなどのエイリアスも受け付け、現在の名前で応答します。
city任意tzの代わりに使う都市のスラッグ(例:london。スラッグは/citiesで検索)。

リクエスト例

curl "https://hourora.app/api/v1/time?tz=Europe/London"

レスポンス例

{
  "zone": "Europe/London",
  "local": "2026-10-15T15:23:32",
  "iso": "2026-10-15T15:23:32+01:00",
  "offsetMinutes": 60,
  "offset": "+01:00",
  "utcOffset": "UTC+1",
  "abbreviation": "BST",
  "dst": true,
  "city": null,
  "utc": "2026-10-15T14:23:32.411Z",
  "unixMs": 1792074212411,
  "date": "2026-10-15",
  "time": "15:23:32",
  "weekday": "Thursday",
  "dayOfYear": 288,
  "isoWeek": 42,
  "dstObserved": true,
  "nextTransition": {
    "at": "2026-10-25T01:00:00.000Z",
    "unixMs": 1792890000000,
    "type": "dst-end",
    "fromOffsetMinutes": 60,
    "toOffsetMinutes": 0,
    "shiftMinutes": -60,
    "fromAbbreviation": "BST",
    "toAbbreviation": "GMT",
    "localBefore": "2026-10-25T02:00:00",
    "localAfter": "2026-10-25T01:00:00"
  },
  "tzdata": "2026e"
}

このサーバーからの実際のレスポンスです。

時刻を変換

GET/api/v1/convert

あるタイムゾーンの壁時計の時刻を別のタイムゾーンで表示します。その時刻が夏時間の空白(存在しない時刻)や重複(2回ある時刻)に当たる場合はそれを示します。

パラメーター

名前意味
from必須時刻を解釈するタイムゾーン(または都市のスラッグ)。
to必須表示先のタイムゾーン(または都市のスラッグ)。
time任意fromのタイムゾーンでの壁時計の時刻。YYYY-MM-DDTHH:mm(秒は任意、オフセットなし)、1970~2060年。既定:現在。

リクエスト例

curl "https://hourora.app/api/v1/convert?from=America/New_York&to=Asia/Kolkata&time=2026-10-16T15:00"

レスポンス例

{
  "status": "ok",
  "requested": "2026-10-16T15:00:00",
  "utc": "2026-10-16T19:00:00.000Z",
  "unixMs": 1792177200000,
  "from": {
    "zone": "America/New_York",
    "local": "2026-10-16T15:00:00",
    "iso": "2026-10-16T15:00:00-04:00",
    "offsetMinutes": -240,
    "offset": "-04:00",
    "utcOffset": "UTC-4",
    "abbreviation": "EDT",
    "dst": true
  },
  "to": {
    "zone": "Asia/Kolkata",
    "local": "2026-10-17T00:30:00",
    "iso": "2026-10-17T00:30:00+05:30",
    "offsetMinutes": 330,
    "offset": "+05:30",
    "utcOffset": "UTC+5:30",
    "abbreviation": "IST",
    "dst": false,
    "dayOffset": 1
  },
  "differenceMinutes": 570,
  "tzdata": "2026e"
}

このサーバーからの実際のレスポンスです。

タイムゾーン一覧

GET/api/v1/zones

すべてのIANAタイムゾーンと、その現在のUTCオフセット、略称、夏時間の状態、国、主要都市。

パラメーター

名前意味
country任意ISO 3166の国コード(例:GB)。その国のみに絞り込みます。

リクエスト例

curl "https://hourora.app/api/v1/zones?country=GB"

レスポンス例

{
  "asOf": "2026-10-15T14:23:32.411Z",
  "count": 1,
  "tzdata": "2026e",
  "zones": [
    {
      "id": "Europe/London",
      "offsetMinutes": 60,
      "offset": "+01:00",
      "utcOffset": "UTC+1",
      "abbreviation": "BST",
      "dst": true,
      "countries": [
        "GB",
        "GG",
        "IM"
      ],
      "mainCity": "London"
    }
  ]
}

このサーバーからの実際のレスポンスです。リストは最初の3件に短縮しています。

単一のタイムゾーン

GET/api/v1/zones/{id}

1つのIANAタイムゾーン:エイリアス、国と都市、現在のオフセット、次の時刻の切り替え、指定した年のすべての切り替え。

パラメーター

名前意味
idパス内IANAタイムゾーン名。スラッシュはそのまま残すか、%2Fにエンコードします。
year任意時刻の切り替えを一覧表示する年。1970~2060。既定:今年。

リクエスト例

curl "https://hourora.app/api/v1/zones/America%2FNew_York?year=2027"

レスポンス例

{
  "id": "America/New_York",
  "aliases": [
    "US/Eastern"
  ],
  "countries": [
    {
      "code": "US",
      "name": "United States"
    }
  ],
  "cities": [
    {
      "slug": "new-york",
      "name": "New York"
    },
    {
      "slug": "philadelphia",
      "name": "Philadelphia"
    },
    {
      "slug": "miami",
      "name": "Miami"
    }
  ],
  "now": {
    "zone": "America/New_York",
    "local": "2026-10-15T10:23:32",
    "iso": "2026-10-15T10:23:32-04:00",
    "offsetMinutes": -240,
    "offset": "-04:00",
    "utcOffset": "UTC-4",
    "abbreviation": "EDT",
    "dst": true,
    "utc": "2026-10-15T14:23:32.411Z",
    "standardOffsetMinutes": -300,
    "dstObserved": true
  },
  "nextTransition": {
    "at": "2026-11-01T06:00:00.000Z",
    "unixMs": 1793512800000,
    "type": "dst-end",
    "fromOffsetMinutes": -240,
    "toOffsetMinutes": -300,
    "shiftMinutes": -60,
    "fromAbbreviation": "EDT",
    "toAbbreviation": "EST",
    "localBefore": "2026-11-01T02:00:00",
    "localAfter": "2026-11-01T01:00:00"
  },
  "year": 2027,
  "dstObservedInYear": true,
  "transitions": [
    {
      "at": "2027-03-14T07:00:00.000Z",
      "unixMs": 1805007600000,
      "type": "dst-start",
      "fromOffsetMinutes": -300,
      "toOffsetMinutes": -240,
      "shiftMinutes": 60,
      "fromAbbreviation": "EST",
      "toAbbreviation": "EDT",
      "localBefore": "2027-03-14T02:00:00",
      "localAfter": "2027-03-14T03:00:00"
    },
    {
      "at": "2027-11-07T06:00:00.000Z",
      "unixMs": 1825567200000,
      "type": "dst-end",
      "fromOffsetMinutes": -240,
      "toOffsetMinutes": -300,
      "shiftMinutes": -60,
      "fromAbbreviation": "EDT",
      "toAbbreviation": "EST",
      "localBefore": "2027-11-07T02:00:00",
      "localAfter": "2027-11-07T01:00:00"
    }
  ],
  "tzdata": "2026e"
}

このサーバーからの実際のレスポンスです。リストは最初の3件に短縮しています。

都市を検索

GET/api/v1/cities

名前が一致する都市を、一致度の高い順・規模の大きい順に、国、座標、タイムゾーンとともに返します。

パラメーター

名前意味
q必須都市名の一部。アクセント記号は省略可(最大80文字)。
limit任意結果の件数、1~50。既定は10。
country任意ISO 3166の国コード(例:GB)。その国のみに絞り込みます。

リクエスト例

curl "https://hourora.app/api/v1/cities?q=lond&limit=3"

レスポンス例

{
  "query": "lond",
  "count": 3,
  "total": 7,
  "cities": [
    {
      "slug": "london",
      "name": "London",
      "asciiName": "London",
      "country": {
        "code": "GB",
        "name": "United Kingdom"
      },
      "region": "Westminster",
      "zone": "Europe/London",
      "lat": 51.5,
      "lng": -0.1167,
      "population": 7994105,
      "capital": true,
      "url": "https://hourora.app/en/london"
    },
    {
      "slug": "londrina",
      "name": "Londrina",
      "asciiName": "Londrina",
      "country": {
        "code": "BR",
        "name": "Brazil"
      },
      "region": "Paraná",
      "zone": "America/Sao_Paulo",
      "lat": -23.3,
      "lng": -51.18,
      "population": 496035,
      "capital": false,
      "url": "https://hourora.app/en/londrina"
    },
    {
      "slug": "london-ontario",
      "name": "London",
      "asciiName": "London",
      "country": {
        "code": "CA",
        "name": "Canada"
      },
      "region": "Ontario",
      "zone": "America/Toronto",
      "lat": 42.97,
      "lng": -81.25,
      "population": 340900,
      "capital": false,
      "url": "https://hourora.app/en/london-ontario"
    }
  ]
}

このサーバーからの実際のレスポンスです。

単一の都市

GET/api/v1/cities/{slug}

スラッグで指定した1つの都市と、そのタイムゾーンの現在のオフセット、次の時刻の切り替え。

パラメーター

名前意味
slugパス内都市のスラッグ(例:tokyo)。

リクエスト例

curl "https://hourora.app/api/v1/cities/tokyo"

レスポンス例

{
  "slug": "tokyo",
  "name": "Tokyo",
  "asciiName": "Tokyo",
  "country": {
    "code": "JP",
    "name": "Japan"
  },
  "region": "Tokyo",
  "zone": "Asia/Tokyo",
  "lat": 35.685,
  "lng": 139.7514,
  "population": 22006300,
  "capital": true,
  "url": "https://hourora.app/en/tokyo",
  "now": {
    "zone": "Asia/Tokyo",
    "local": "2026-10-15T23:23:32",
    "iso": "2026-10-15T23:23:32+09:00",
    "offsetMinutes": 540,
    "offset": "+09:00",
    "utcOffset": "UTC+9",
    "abbreviation": "JST",
    "dst": false,
    "utc": "2026-10-15T14:23:32.411Z"
  },
  "nextTransition": null,
  "tzdata": "2026e"
}

このサーバーからの実際のレスポンスです。

座標からタイムゾーン

GET/api/v1/lookup

緯度と経度に最も近い掲載都市とそのタイムゾーン。近似値です。タイムゾーンの境界はモデル化していません。

パラメーター

名前意味
lat必須10進数の度で表した緯度、−90~90。
lng必須10進数の度で表した経度、−180~180。

リクエスト例

curl "https://hourora.app/api/v1/lookup?lat=48.85&lng=2.35"

レスポンス例

{
  "query": {
    "lat": 48.85,
    "lng": 2.35
  },
  "approximate": true,
  "method": "nearest listed city (great-circle distance); time-zone borders are not modelled",
  "distanceKm": 2.2,
  "city": {
    "slug": "paris",
    "name": "Paris",
    "asciiName": "Paris",
    "country": {
      "code": "FR",
      "name": "France"
    },
    "region": "Île-de-France",
    "zone": "Europe/Paris",
    "lat": 48.8667,
    "lng": 2.3333,
    "population": 4957589,
    "capital": true,
    "url": "https://hourora.app/en/paris"
  },
  "zone": "Europe/Paris",
  "now": {
    "zone": "Europe/Paris",
    "local": "2026-10-15T16:23:32",
    "iso": "2026-10-15T16:23:32+02:00",
    "offsetMinutes": 120,
    "offset": "+02:00",
    "utcOffset": "UTC+2",
    "abbreviation": "CEST",
    "dst": true,
    "utc": "2026-10-15T14:23:32.411Z"
  },
  "tzdata": "2026e"
}

このサーバーからの実際のレスポンスです。

データのバージョン

GET/api/v1/tzdata

応答の基になっているIANAタイムゾーンデータベースのリリースと、Houroraが最後にデータを更新した日時。

パラメーター

パラメーターはありません。

リクエスト例

curl "https://hourora.app/api/v1/tzdata"

レスポンス例

{
  "version": "2026e",
  "source": "IANA Time Zone Database",
  "sourceUrl": "https://www.iana.org/time-zones",
  "dataDate": "2026-10-13",
  "range": {
    "from": "1970-01-01",
    "to": "2060-12-31"
  },
  "zones": 344,
  "links": 253,
  "cities": 7269,
  "note": "Outside the compiled range, offsets fall back to the server runtime's own tzdata."
}

このサーバーからの実際のレスポンスです。

エラー

エラーもJSONで返ります:HTTPステータス、プログラム向けの固定コード、人が読むためのメッセージ。

{
  "error": {
    "code": "unknown_zone",
    "message": "\"Mars/Base\" is not an IANA time zone name. List them with /api/v1/zones."
  }
}
ステータスコード発生条件
400missing_parameter, invalid_parameterパラメーターが不足しているか、想定された形式ではありません。
404unknown_zone, unknown_city, unknown_country, not_found該当するタイムゾーン、都市、国、エンドポイントがありません。
429rate_limitedクライアントからのリクエストが多すぎます。Retry-Afterに示された秒数だけお待ちください。
500internal_errorサーバー側で問題が発生しました。しばらくしてからもう一度お試しください。

しくみ

制限とキャッシュ

各クライアントは毎分最大120リクエストまで送信でき、短時間のバーストも許容されます。それを超えると、APIはRetry-Afterヘッダー付きの429で応答します。この制限は無料サービスを守るためのものです。より多く必要な場合はキャッシュしてください。

すべてのレスポンスには、キャッシュしてよい期間が示されています(Cache-Control)。現在時刻はキャッシュされません。タイムゾーン一覧、都市の詳細、座標検索は5分間、都市検索と特定時刻の変換は1日です。

時計を作るなら、オフセットを一度取得してローカルで時刻を進め、レスポンスが示す次の時刻の切り替え後に再取得してください。毎秒ポーリングする必要はありません。

応答データの出典

オフセット、略称、時刻の切り替えは、Houroraが独自にコンパイルしたIANAタイムゾーンデータベース(リリース2026e、1970~2060年)に基づきます。その範囲外ではサーバー組み込みのデータを使用するため、古い場合があります。

変換では夏時間の境界を明示的に処理します。時計を進める際に飛ばされる時刻は空白(gap)として、時計を戻す際に2回ある時刻は重複(overlap)として、両方の瞬間とともに返します。

座標からの検索は、約7,200の掲載都市のうち最も近い都市とそのタイムゾーンを返します。境界付近、海上、人口の少ない地域では、その地点で実際に適用されるタイムゾーンと異なる場合があります。

利用規約

よくある質問

知っておきたいこと

Hourora APIは本当に無料ですか?

はい。キーもアカウントも有料プランもありません。クライアントごとのレート制限により、誰もが公平に利用できます。

ブラウザのJavaScriptから呼び出せますか?

はい。すべてのエンドポイントが任意のWebサイトからのクロスオリジンリクエスト(CORS)を許可しており、認証情報も不要です。

夏時間はどのように扱われますか?

各応答は、IANAのルールに基づいて正確な瞬間について計算されます。convertエンドポイントは、指定した壁時計の時刻が存在しない場合(時計を進めるとき)や2回ある場合(時計を戻すとき)にもそれを示します。

座標からの検索はどのくらい正確ですか?

最も近い掲載都市のタイムゾーンを返すため、人が住むほとんどの場所で正確です。タイムゾーンの境界はモデル化していないため、境界付近や海上では誤る場合があります。