DateTime în Dart

Un moment în timp (dată și oră), în fusul orar local sau în UTC. Constructorul creează o dată locală.

Sintaxă
DateTime(int year, [int month = 1, int day = 1, int hour = 0, int minute = 0,
    int second = 0, int millisecond = 0, int microsecond = 0])

Ce face DateTime

DateTime reprezintă un moment precis: an, lună, zi, oră, minut, secundă, până la microsecunde. Constructorul DateTime(2026, 10, 19) creează data în fusul orar local al calculatorului; doar anul este obligatoriu, restul au valori implicite (1 pentru lună și zi, 0 pentru oră). Pentru UTC folosește DateTime.utc.

Lunile încep de la 1 (ianuarie = 1), nu de la 0. Valorile în afara intervalului sunt „reportate”: DateTime(2026, 1, 32) devine 1 februarie, iar DateTime(2026, 3, 0) este ultima zi din februarie. Trucul este util pentru a afla câte zile are o lună.

Obiectele DateTime sunt imutabile: add, copyWith și celelalte returnează date noi. Două date se compară cu isBefore, isAfter sau compareTo, deci o listă de date se poate sorta direct.

Parametri

Parametru Descriere
year Anul.
month, day Luna (1–12) și ziua (1–31); implicit 1.
hour, minute, second Ora, minutul, secunda; implicit 0.
millisecond, microsecond Fracțiuni de secundă; implicit 0.

Ce returnează

Un obiect DateTime local.

Exemple

Exemplul 1: Crearea unor date

void main() {
  var examen = DateTime(2026, 6, 15, 9, 30);
  print(examen);
  print(DateTime(2026));
  print(DateTime(2026, 1, 32));
  print(examen.isUtc);
  var zile = [DateTime(2026, 12, 1), DateTime(2026, 3, 8), DateTime(2026, 6, 1)];
  zile.sort();
  print(zile);
}

Rezultat

2026-06-15 09:30:00.000
2026-01-01 00:00:00.000
2026-02-01 00:00:00.000
false
[2026-03-08 00:00:00.000, 2026-06-01 00:00:00.000, 2026-12-01 00:00:00.000]

Exemplul 2: Câte zile are fiecare lună

Ziua 0 a lunii următoare este ultima zi a lunii curente.

int zileInLuna(int an, int luna) => DateTime(an, luna + 1, 0).day;

void main() {
  const luni = ['ian', 'feb', 'mar', 'apr', 'mai', 'iun', 'iul', 'aug', 'sep', 'oct', 'noi', 'dec'];
  for (var l = 1; l <= 12; l++) {
    print('${luni[l - 1]}: ${zileInLuna(2026, l)}');
  }
  print('februarie 2028: ${zileInLuna(2028, 2)}');
}

Rezultat

ian: 31
feb: 28
mar: 31
apr: 30
mai: 31
iun: 30
iul: 31
aug: 31
sep: 30
oct: 31
noi: 30
dec: 31
februarie 2028: 29

Greșeli frecvente

  • Numeri lunile de la 0, ca în JavaScript: DateTime(2026, 0, 15) devine 15 decembrie 2025.
  • Compari date cu < sau >: nu compilează. Folosește isBefore, isAfter sau compareTo.

Comenzi înrudite

  • DateTime.now: Creează un DateTime cu data și ora curente, în fusul orar local al calculatorului.
  • DateTime.year: Proprietățile care dau componentele unei date: anul, luna, ziua, ora, minutul și secunda.
  • DateTime.parse: Transformă un text în format ISO 8601 (2026-10-19 14:30) într-un DateTime; tryParse dă null la text greșit.
  • DateTime.utc: DateTime.utc creează o dată în UTC; toUtc și toLocal transformă același moment între UTC și ora locală.
  • Duration: Un interval de timp (de exemplu 2 ore și 30 de minute), independent de calendar; Duration.zero este durata 0.