метод copyWith
Создает новый объект DateTime на основе этого, обновляя отдельные свойства.
Метод copyWith создает новый объект DateTime со значениями свойств DateTime.year, DateTime.hour и т. д., заданными аргументами с соответствующими именами, либо использует существующее значение свойства, если аргумент или null не предоставлен.
Пример:
final now = DateTime.now();
final sameTimeOnMoonLandingDay =
now.copyWith(year: 1969, month: 07, day: 20); Как и в конструкторах DateTime и DateTime.utc, которые используются этой операцией для создания нового значения, значения свойств могут выходить за допустимый диапазон (например, month вне диапазона от 1 до 12), что может влиять на свойства более высокого порядка (например, месяц со значением 13 приведет к январю следующего года).
Обратите также внимание, что если результатом является локальный объект DateTime, сезонные корректировки часового пояса (переход на летнее время) могут привести к тому, что некоторые сочетания дат, часов и минут не будут существовать или будут встречаться более одного раза. В первом случае вместо них используется соответствующее время в одном из двух соседних часовых поясов. Во втором выбирается один из двух вариантов.
Реализация
DateTime copyWith({
int? year,
int? month,
int? day,
int? hour,
int? minute,
int? second,
int? millisecond,
int? microsecond,
bool? isUtc,
}) {
return ((isUtc ?? this.isUtc) ? DateTime.utc : DateTime.new)(
year ?? this.year,
month ?? this.month,
day ?? this.day,
hour ?? this.hour,
minute ?? this.minute,
second ?? this.second,
millisecond ?? this.millisecond,
microsecond ?? this.microsecond,
);
}
© 2012 the Dart project authors
Licensed under the BSD 3-Clause "New" or "Revised" License.
https://api.dart.dev/stable/2.19.6/dart-core/DateTimeCopyWith/copyWith.html