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 构造函数类似,该操作使用它们来创建新值,属性值允许溢出或下溢属性的取值范围(例如,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,
);
}