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 —
observatieo 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_localarată 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."
}
}
}
GEThttps://oneapi.ro/api/utile/v1/timp/tranzitii/Asia%2FTokyo?an=2027
{
"data": {
"zona": "Asia/Tokyo",
"an": 2027,
"inregistrari": 0,
"tranzitii": [],
"observatie": "Zona nu are treceri de oră în anul cerut — fie n-a avut niciodată ora de vară, fie a renunțat la ea.",
"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."
}
}
}
GEThttps://oneapi.ro/api/utile/v1/timp/tranzitii/Europe%2FLondon
{
"data": {
"zona": "Europe/London",
"an": 2026,
"inregistrari": 2,
"tranzitii": [
{
"moment_utc": "2026-03-29T01: 00: 00+00: 00",
"moment_local": "2026-03-29T02: 00: 00+01: 00",
"offset_secunde": 3600,
"offset": "+01: 00",
"ora_de_vara": true,
"abreviere": "BST"
}
],
"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."
}
}
}
GEThttps://oneapi.ro/api/utile/v1/timp/tranzitii/Asia%2FTokyo
{
"data": {
"zona": "Asia/Tokyo",
"an": 2026,
"inregistrari": 0,
"tranzitii": [],
"observatie": "Zona nu are treceri de oră în anul cerut — fie n-a avut niciodată ora de vară, fie a renunțat la ea.",
"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
| Cod | Slug | Când apare |
|---|---|---|
| 401 | neautentificat | Token lipsă, invalid, expirat sau revocat. |
| 403 | feature_indisponibil | Planul curent nu include funcţia de care ţine ruta. |
| 404 | negasit | Fusul nu există. |
| 422 | validare | Anul e în afara intervalului 1900–2100. |
| 429 | cota_depasita | Cota 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."
]
}
}
}