DateTime.copyWith în Dart

Creează o dată nouă, copiind-o pe cea existentă și schimbând doar componentele date ca argumente.

Sintaxă
DateTime copyWith({int? year, int? month, int? day, int? hour, int? minute,
    int? second, int? millisecond, int? microsecond, bool? isUtc})

Ce face DateTime.copyWith

copyWith păstrează toate componentele datei și le înlocuiește doar pe cele pe care le dai: d.copyWith(hour: 0, minute: 0) este aceeași zi, la miezul nopții. Data originală nu se schimbă. Metoda vine dintr-o extensie din dart:core, deci este disponibilă fără import.

Valorile în afara intervalului sunt reportate, ca la constructor: copyWith(day: d.day + 1) trece corect în luna următoare. Cu isUtc poți schimba felul datei, dar atenție: componentele rămân aceleași (ora 12 locală devine ora 12 UTC, alt moment). Pentru transformarea corectă folosește toUtc().

Parametri

Parametru Descriere
year ... microsecond Componentele noi; cele lipsă rămân ca în original.
isUtc Fusul noii date (componentele nu se transformă).

Ce returnează

Un DateTime nou.

Exemple

Exemplul 1: Schimbarea unor componente

void main() {
  var d = DateTime(2026, 10, 19, 14, 37, 12);
  print(d.copyWith(hour: 0, minute: 0, second: 0));
  print(d.copyWith(year: 2027));
  print(d.copyWith(day: 32));
  print(d.copyWith(month: 12, day: 25, hour: 18, minute: 0));
  print(d);
}

Rezultat

2026-10-19 00:00:00.000
2027-10-19 14:37:12.000
2026-11-01 14:37:12.000
2026-12-25 18:00:12.000
2026-10-19 14:37:12.000

Exemplul 2: Programări la aceeași oră, săptămânal

void main() {
  var prima = DateTime(2026, 10, 19, 17, 30);
  for (var i = 0; i < 4; i++) {
    var s = prima.copyWith(day: prima.day + 7 * i);
    print('Ședința ${i + 1}: ${s.day}.${s.month} la ${s.hour}:${s.minute}');
  }
}

Rezultat

Ședința 1: 19.10 la 17:30
Ședința 2: 26.10 la 17:30
Ședința 3: 2.11 la 17:30
Ședința 4: 9.11 la 17:30

Greșeli frecvente

  • Folosești copyWith(isUtc: true) ca să transformi o dată locală în UTC. Obții alt moment; pentru transformare folosește toUtc().

Comenzi înrudite

  • DateTime: Un moment în timp (dată și oră), în fusul orar local sau în UTC. Constructorul creează o dată locală.
  • DateTime.add: Returnează o dată nouă, mutată înainte (add) sau înapoi (subtract) cu o durată dată.
  • DateTime.year: Proprietățile care dau componentele unei date: anul, luna, ziua, ora, minutul și secunda.