Ce face DateTime.fromMillisecondsSinceEpoch
Multe sisteme (baze de date, API-uri, JavaScript) păstrează momentele ca un singur număr: milisecunde trecute de la epoca Unix, 1 ianuarie 1970, 00:00 UTC. millisecondsSinceEpoch îți dă acest număr pentru o dată, iar DateTime.fromMillisecondsSinceEpoch(n) face drumul invers.
Numărul nu depinde de fusul orar: același moment are același număr peste tot. Constructorul creează implicit o dată locală; cu isUtc: true o creează în UTC. Dacă primești secunde (timestamp Unix clasic), înmulțește cu 1000. Există și variantele cu microsecunde: microsecondsSinceEpoch și fromMicrosecondsSinceEpoch.
Parametri
| Parametru | Descriere |
|---|---|
millisecondsSinceEpoch |
Milisecundele de la 1970-01-01 00:00 UTC (pot fi negative, pentru date mai vechi). |
isUtc |
true pentru o dată UTC; implicit locală. |
Ce returnează
Constructorul: un DateTime. Proprietatea: un int.
Exemple
Exemplul 1: De la număr la dată și înapoi
void main() {
var d = DateTime.utc(2026, 10, 19, 11, 30);
var ms = d.millisecondsSinceEpoch;
print(ms);
print(DateTime.fromMillisecondsSinceEpoch(ms, isUtc: true));
print(DateTime.fromMillisecondsSinceEpoch(0, isUtc: true));
print(DateTime.fromMillisecondsSinceEpoch(-86400000, isUtc: true));
var local = DateTime.fromMillisecondsSinceEpoch(ms);
print(local.isUtc);
print(local.millisecondsSinceEpoch == ms);
}
Rezultat
1792409400000
2026-10-19 11:30:00.000Z
1970-01-01 00:00:00.000Z
1969-12-31 00:00:00.000Z
false
true
Exemplul 2: Timestamp Unix în secunde
Un API trimite timpul în secunde; îl transformăm în milisecunde și calculăm câte zile au trecut între două comenzi.
void main() {
var comenzi = {'#1001': 1790000000, '#1002': 1792420200};
var date = comenzi.map((id, sec) =>
MapEntry(id, DateTime.fromMillisecondsSinceEpoch(sec * 1000, isUtc: true)));
date.forEach((id, d) => print('$id: ${d.toIso8601String()}'));
var zile = date['#1002']!.difference(date['#1001']!).inDays;
print('Între comenzi au trecut $zile zile');
}
Rezultat
#1001: 2026-09-21T14:13:20.000Z
#1002: 2026-10-19T14:30:00.000Z
Între comenzi au trecut 28 zile
Greșeli frecvente
- Dai secunde în loc de milisecunde și primești o dată din ianuarie 1970. Înmulțește timestamp-ul Unix cu 1000.
Comenzi înrudite
DateTime.utc: DateTime.utc creează o dată în UTC; toUtc și toLocal transformă același moment între UTC și ora locală.DateTime: Un moment în timp (dată și oră), în fusul orar local sau în UTC. Constructorul creează o dată locală.DateTime.difference: Calculează timpul dintre două date, ca Duration: this minus other.