copyWith 方法
通过更新单独的属性从这个 DateTime 对象创建一个新 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 范围之外的 month
),这可能影响更重要的属性(例如,月份为 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,
);
}