oneapi
Autentificare
Utile v1 / Timp

Treceri la ora de vară

Trecerile la ora de vară şi la cea de iarnă într-o zonă, pe un an: momentul exact al fiecărei treceri, în UTC şi local, şi decalajul de dinainte şi de după.

GET
https://oneapi.ro/api/utile/v1/timp/tranzitii/{zona}

Parametri de cale

NumeTipDescriereExemplu
zonaobligatoriu string Numele fusului orar în baza IANA, codat URL.

Parametri de interogare

NumeTipDescriereValori acceptate
anopțional integer | null Anul, între 1900 și 2100. Implicit anul curent. 1900 – 2100

Cum se comportă

  • Majoritatea zonelor au două treceri pe an; unele n-au niciuna. Japonia n-a avut ora de vară din 1951, iar o listă goală înseamnă exact asta, nu lipsă de date — observatie o spune.
  • Ora locală a unei treceri „sare": la 29 martie 2026, în București, ceasul merge de la 03:00 direct la 04:00, deci moment_local arată ora DE DUPĂ salt. Momentul în UTC e cel neambiguu.
  • Starea de la începutul anului NU e raportată ca tranziție. Inclusă, ar face să pară că fiecare zonă din lume are o schimbare pe 1 ianuarie la miezul nopții.

La ce folosește

  • Eviți să programezi un job recurent în ora care dispare la trecerea la ora de vară.
  • Explici într-un raport de ce o zi a avut 23 sau 25 de ore.
  • Verifici dacă o țară mai schimbă ora în anul care vine.

Structura răspunsului

Toate câmpurile de mai jos sunt în data.

CâmpTipDescriere
zona string Zona de ofertare sau teritoriul la care se referă datele.
an integer Anul la care se referă datele.
inregistrari integer Câte treceri are anul.
tranzitii[].moment_utc string Momentul trecerii, în UTC — forma neambiguă.
tranzitii[].moment_local string Același moment în ora locală, DUPĂ salt.
tranzitii[].offset_secunde integer
tranzitii[].offset string Noul decalaj față de UTC.
tranzitii[].ora_de_vara boolean Dacă după trecere zona e pe ora de vară.
tranzitii[].abreviere string Noua abreviere a fusului.
observatie string Explică o listă goală și saltul orei locale.
sursa.nume string Denumirea sursei oficiale.
sursa.versiune string Versiunea setului de date sau a artefactului din care vin valorile.
sursa.licenta string Licenţa sub care sursa permite reutilizarea.
sursa.observatie string Ce trebuie ştiut despre sursă înainte de a folosi datele.

Exemple de răspuns

GEThttps://oneapi.ro/api/utile/v1/timp/tranzitii/Europe%2FBucharest
{
    "data": {
        "zona": "Europe/Bucharest",
        "an": 2026,
        "inregistrari": 2,
        "tranzitii": [
            {
                "moment_utc": "2026-03-29T01: 00: 00+00: 00",
                "moment_local": "2026-03-29T04: 00: 00+03: 00",
                "offset_secunde": 10800,
                "offset": "+03: 00",
                "ora_de_vara": true,
                "abreviere": "EEST"
            }
        ],
        "observatie": "Momentele sunt date și în UTC, și în ora locală. Ora locală a unei treceri „sare\": la 29 martie 2026, în București, ora 03: 00 nu există.",
        "sursa": {
            "nume": "IANA Time Zone Database (tzdata), prin runtime-ul PHP",
            "versiune": "2026.3",
            "licenta": "Domeniu public.",
            "observatie": "Se actualizează la un upgrade de imagine, nu printr-un import. Fusurile chiar se schimbă prin decizii politice, uneori cu săptămâni înainte — de aceea versiunea e în răspuns."
        }
    }
}

Coduri de eroare

CodSlugCând apare
401neautentificatToken lipsă, invalid, expirat sau revocat.
403feature_indisponibilPlanul curent nu include funcţia de care ţine ruta.
404negasitFusul nu există.
422validareAnul e în afara intervalului 1900–2100.
429cota_depasitaCota lunară a planului a fost depăşită (vezi Retry-After).

Toate erorile au aceeași formă. eroare.cod e stabil și e cel după care trebuie să ramifici în cod — nu după textul din mesaj, care se poate schimba.

{
    "eroare": {
        "cod": "validare",
        "mesaj": "Anul e în afara intervalului 1900–2100.",
        "detalii": {
            "zona": [
                "Valoarea trimisă nu respectă regula parametrului."
            ]
        }
    }
}