Ce face DateTime.utc
UTC este ora de referință a lumii, fără ora de vară. DateTime.utc(2026, 10, 19, 12) creează ora 12:00 UTC; are aceiași parametri ca constructorul obișnuit. Proprietatea isUtc spune în ce fel este o dată, iar toString() adaugă un Z la final pentru UTC.
toUtc() și toLocal() nu schimbă momentul, ci doar felul în care este exprimat. 15:00 în București vara (UTC+3) este același moment cu 12:00 UTC: millisecondsSinceEpoch rămâne identic, doar hour diferă.
Regula practică: salvează și trimite datele în UTC (în baze de date, API-uri, fișiere), iar pentru afișare transformă-le cu toLocal(). Calculele cu zile întregi sunt mai sigure în UTC, unde nu există trecerea la ora de vară.
Parametri
| Parametru | Descriere |
|---|---|
year, month, day, ... |
Componentele datei, în UTC. |
Ce returnează
Un DateTime (UTC pentru utc și toUtc, local pentru toLocal).
Exemple
Exemplul 1: Același moment, exprimat diferit
Rezultatul depinde de fusul orar al calculatorului; exemplul de mai jos a rulat în București (EEST, UTC+3).
void main() {
var utc = DateTime.utc(2026, 10, 19, 12, 0);
var local = utc.toLocal();
print(utc);
print(local);
print(local.timeZoneName);
print(local.timeZoneOffset);
print(utc.millisecondsSinceEpoch == local.millisecondsSinceEpoch);
}
Rezultat posibil (diferă la fiecare rulare)
2026-10-19 12:00:00.000Z
2026-10-19 15:00:00.000
EEST
3:00:00.000000
true
Exemplul 2: Dus-întors între UTC și local
Aceste rezultate nu depind de fusul orar: momentul se păstrează la fiecare transformare.
void main() {
var plecare = DateTime.utc(2026, 7, 1, 6, 45);
print(plecare);
print(plecare.isUtc);
var local = plecare.toLocal();
print(local.isUtc);
var inapoi = local.toUtc();
print(inapoi);
print(inapoi == plecare);
print(local.isAtSameMomentAs(plecare));
}
Rezultat
2026-07-01 06:45:00.000Z
true
false
2026-07-01 06:45:00.000Z
true
true
Greșeli frecvente
- Compari o dată UTC cu una locală cu
==și primeștifalse, deși e același moment.==ține cont și de fusul orar; foloseșteisAtSameMomentAs. - Adaugi manual 2 sau 3 ore ca să „transformi” în ora României. Folosește
toLocal(), care știe de ora de vară.
Comenzi înrudite
DateTime: Un moment în timp (dată și oră), în fusul orar local sau în UTC. Constructorul creează o dată locală.DateTime.isBefore: Compară două date: este înainte (isBefore), după (isAfter) sau exact în același moment (isAtSameMomentAs)?DateTime.fromMillisecondsSinceEpoch: Transformă între un DateTime și numărul de milisecunde trecute de la 1 ianuarie 1970, ora 00:00 UTC.DateTime.now: Creează un DateTime cu data și ora curente, în fusul orar local al calculatorului.