Hourora

Tastenkürzel

/
Stadt suchen
H
Zwischen 12 und 24 Stunden wechseln
S
Sekunden ein- oder ausblenden
T
Design: Tag, Nacht, automatisch
P
Globus anhalten oder fortsetzen
?
Diese Liste
DE

Für Entwickler

Eine kostenlose Zeitzonen-API

Dieselbe Engine, auf der Hourora läuft, als schlichtes JSON: die Uhrzeit überall, Umrechnungen, die die Sommerzeit kennen, jede IANA-Zeitzone und ihre Zeitumstellungen. Ohne Schlüssel, ohne Anmeldung.

Auf einen Blick

Basis-URL
https://hourora.app/api/v1
Format
JSON (UTF-8), nur GET-Anfragen
Authentifizierung
Keine: kein Schlüssel, keine Anmeldung, keine Cookies
CORS
Für jeden Ursprung offen, daher auch aus dem Browser aufrufbar
Ratenbegrenzung
120 Anfragen pro Minute und Client
Zeitdaten
IANA tzdata 2026e, kompiliert von Hourora
Maschinenlesbare Beschreibung
OpenAPI-3.1-Dokument

Live ausprobieren

Wählen Sie ein Beispiel oder bearbeiten Sie den Pfad und senden Sie ihn ab. Die Anfrage geht direkt von Ihrem Browser an die API.

Antwort

Die Antwort erscheint hier.

Die Endpunkte

Jeder Endpunkt beantwortet GET mit JSON. Zeiten sind im Format ISO 8601; Offsets sind Minuten östlich von UTC (New York im Winter ist −300) und zusätzlich als Text angegeben (−05:00).

Aktuelle Uhrzeit

GET/api/v1/time

Die aktuelle Uhrzeit in einer Zeitzone oder Stadt: Ortszeit, UTC-Offset, Abkürzung, Sommerzeit und die nächste Zeitumstellung. Ohne Parameter: UTC.

Parameter

NameBedeutung
tzoptionalIANA-Zeitzonenname, z. B. Europe/London. Aliasse wie Asia/Calcutta werden akzeptiert und mit dem aktuellen Namen beantwortet.
cityoptionalStadt-Slug statt tz, z. B. london (Slugs finden Sie mit /cities).

Beispielanfrage

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

Beispielantwort

{
  "zone": "Europe/London",
  "local": "2026-10-14T02:04:36",
  "iso": "2026-10-14T02:04:36+01:00",
  "offsetMinutes": 60,
  "offset": "+01:00",
  "utcOffset": "UTC+1",
  "abbreviation": "BST",
  "dst": true,
  "city": null,
  "utc": "2026-10-14T01:04:36.015Z",
  "unixMs": 1791939876015,
  "date": "2026-10-14",
  "time": "02:04:36",
  "weekday": "Wednesday",
  "dayOfYear": 287,
  "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"
}

Echte Antwort dieses Servers.

Uhrzeit umrechnen

GET/api/v1/convert

Eine Uhrzeit in einer Zone, angezeigt in einer anderen. Meldet, wenn die Uhrzeit in eine Lücke der Zeitumstellung fällt (es gibt sie nicht) oder in eine Überschneidung (es gibt sie zweimal).

Parameter

NameBedeutung
fromerforderlichZone (oder Stadt-Slug), in der die Uhrzeit gelesen wird.
toerforderlichZone (oder Stadt-Slug), in der sie angezeigt wird.
timeoptionalUhrzeit in der from-Zone, YYYY-MM-DDTHH:mm (Sekunden optional, ohne Offset), 1970–2060. Standard: jetzt.

Beispielanfrage

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

Beispielantwort

{
  "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"
}

Echte Antwort dieses Servers.

Zeitzonen auflisten

GET/api/v1/zones

Jede IANA-Zeitzone mit aktuellem UTC-Offset, Abkürzung, Sommerzeitstatus, Ländern und Hauptstadt.

Parameter

NameBedeutung
countryoptionalLändercode nach ISO 3166, z. B. GB, um nur dieses Land zu behalten.

Beispielanfrage

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

Beispielantwort

{
  "asOf": "2026-10-14T01:04:36.015Z",
  "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"
    }
  ]
}

Echte Antwort dieses Servers; Listen gekürzt auf die ersten 3 Einträge.

Eine Zeitzone

GET/api/v1/zones/{id}

Eine IANA-Zone: ihre Aliasse, Länder und Städte, ihr aktueller Offset, die nächste Zeitumstellung und alle Umstellungen in einem bestimmten Jahr.

Parameter

NameBedeutung
idim PfadIANA-Zonenname; den Schrägstrich beibehalten oder als %2F kodieren.
yearoptionalJahr, dessen Zeitumstellungen aufgelistet werden, 1970–2060. Standard: dieses Jahr.

Beispielanfrage

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

Beispielantwort

{
  "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-13T21:04:36",
    "iso": "2026-10-13T21:04:36-04:00",
    "offsetMinutes": -240,
    "offset": "-04:00",
    "utcOffset": "UTC-4",
    "abbreviation": "EDT",
    "dst": true,
    "utc": "2026-10-14T01:04:36.015Z",
    "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"
}

Echte Antwort dieses Servers; Listen gekürzt auf die ersten 3 Einträge.

Städte suchen

GET/api/v1/cities

Städte, deren Name passt, die besten Treffer und größten Städte zuerst, jeweils mit Land, Koordinaten und Zeitzone.

Parameter

NameBedeutung
qerforderlichTeil eines Städtenamens, Akzente optional (höchstens 80 Zeichen).
limitoptionalAnzahl der Ergebnisse, 1–50. Standard: 10.
countryoptionalLändercode nach ISO 3166, z. B. GB, um nur dieses Land zu behalten.

Beispielanfrage

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

Beispielantwort

{
  "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"
    }
  ]
}

Echte Antwort dieses Servers.

Eine Stadt

GET/api/v1/cities/{slug}

Eine Stadt anhand ihres Slugs, mit dem aktuellen Offset ihrer Zeitzone und der nächsten Zeitumstellung.

Parameter

NameBedeutung
slugim PfadStadt-Slug, z. B. tokyo.

Beispielanfrage

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

Beispielantwort

{
  "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-14T10:04:36",
    "iso": "2026-10-14T10:04:36+09:00",
    "offsetMinutes": 540,
    "offset": "+09:00",
    "utcOffset": "UTC+9",
    "abbreviation": "JST",
    "dst": false,
    "utc": "2026-10-14T01:04:36.015Z"
  },
  "nextTransition": null,
  "tzdata": "2026e"
}

Echte Antwort dieses Servers.

Koordinaten zu Zeitzone

GET/api/v1/lookup

Die nächstgelegene aufgeführte Stadt zu einem Breiten- und Längengrad und ihre Zeitzone. Eine Annäherung: Zonengrenzen werden nicht abgebildet.

Parameter

NameBedeutung
laterforderlichBreitengrad in Dezimalgrad, −90 bis 90.
lngerforderlichLängengrad in Dezimalgrad, −180 bis 180.

Beispielanfrage

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

Beispielantwort

{
  "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-14T03:04:36",
    "iso": "2026-10-14T03:04:36+02:00",
    "offsetMinutes": 120,
    "offset": "+02:00",
    "utcOffset": "UTC+2",
    "abbreviation": "CEST",
    "dst": true,
    "utc": "2026-10-14T01:04:36.015Z"
  },
  "tzdata": "2026e"
}

Echte Antwort dieses Servers.

Datenversion

GET/api/v1/tzdata

Aus welcher Version der IANA-Zeitzonendatenbank die Antworten stammen und wann Hourora seine Daten zuletzt aktualisiert hat.

Parameter

Keine Parameter.

Beispielanfrage

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

Beispielantwort

{
  "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."
}

Echte Antwort dieses Servers.

Fehler

Auch ein Fehler ist JSON: der HTTP-Status, ein stabiler Code für Ihr Programm und eine Meldung für Menschen.

{
  "error": {
    "code": "unknown_zone",
    "message": "\"Mars/Base\" is not an IANA time zone name. List them with /api/v1/zones."
  }
}
StatusCodesWann
400missing_parameter, invalid_parameterEin Parameter fehlt oder hat nicht die erwartete Form.
404unknown_zone, unknown_city, unknown_country, not_foundDiese Zeitzone, Stadt, dieses Land oder dieser Endpunkt existiert nicht.
429rate_limitedZu viele Anfragen von Ihrem Client; warten Sie die in Retry-After angegebenen Sekunden ab.
500internal_errorAuf unserer Seite ist etwas fehlgeschlagen. Bitte versuchen Sie es später erneut.

So funktioniert es

Grenzen und Caching

Jeder Client darf bis zu 120 Anfragen pro Minute senden, kurze Spitzen sind erlaubt. Darüber hinaus antwortet die API mit 429 und einem Retry-After-Header. Die Begrenzung schützt einen kostenlosen Dienst; wenn Sie mehr brauchen, nutzen Sie einen Cache.

Jede Antwort gibt an, wie lange sie gecacht werden darf (Cache-Control). Die aktuelle Uhrzeit wird nie gecacht; Zonenlisten, Stadtdetails und Koordinatenabfragen fünf Minuten lang; Städtesuchen und Umrechnungen einer bestimmten Uhrzeit einen Tag lang.

Sie bauen eine Uhr? Rufen Sie den Offset einmal ab, lassen Sie die Uhr lokal laufen und rufen Sie ihn nach der nächsten Zeitumstellung, die die Antwort nennt, erneut ab. Es ist nicht nötig, jede Sekunde abzufragen.

Woher die Antworten stammen

Offsets, Abkürzungen und Zeitumstellungen stammen aus Houroras eigener kompilierter Kopie der IANA-Zeitzonendatenbank, Version 2026e, für 1970–2060. Außerhalb dieses Zeitraums werden die integrierten Daten des Servers verwendet, die älter sein können.

Umrechnungen lösen die Ränder der Zeitumstellung ausdrücklich auf: Eine Uhrzeit, die beim Vorstellen der Uhren übersprungen wird, wird als Lücke gemeldet, und eine Uhrzeit, die beim Zurückstellen zweimal vorkommt, als Überschneidung, mit beiden Zeitpunkten.

Die Koordinatenabfrage liefert die nächstgelegene von etwa 7.200 aufgeführten Städten und deren Zeitzone. In Grenznähe, auf See oder in dünn besiedelten Gebieten kann sie von der Zone abweichen, die an diesem Punkt tatsächlich gilt.

Nutzungsbedingungen

Fragen

Gut zu wissen

Ist die Hourora-API wirklich kostenlos?

Ja. Es gibt keinen Schlüssel, kein Konto und keinen kostenpflichtigen Tarif. Eine Ratenbegrenzung pro Client hält den Dienst für alle fair.

Kann ich sie per JavaScript im Browser aufrufen?

Ja. Jeder Endpunkt erlaubt Cross-Origin-Anfragen von jeder Website (CORS), und es sind keine Zugangsdaten nötig.

Wie geht sie mit der Sommerzeit um?

Jede Antwort wird für den exakten Zeitpunkt nach den IANA-Regeln berechnet. Der Endpunkt convert meldet außerdem, wenn eine angefragte Uhrzeit nicht existiert (Uhren werden vorgestellt) oder zweimal vorkommt (Uhren werden zurückgestellt).

Wie genau ist die Koordinatenabfrage?

Sie liefert die Zeitzone der nächstgelegenen aufgeführten Stadt, was fast überall dort stimmt, wo Menschen leben. Zonengrenzen werden nicht abgebildet, daher kann sie in Grenznähe oder auf See falsch liegen.