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ștetoUtc().
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.