copyWith method - DateTimeCopyWith extension - dart:core library (original) (raw)
DateTime copyWith({
- int? year,
- int? month,
- int? day,
- int? hour,
- int? minute,
- int? second,
- int? millisecond,
- int? microsecond,
- bool? isUtc, })
Creates a new DateTime from this one by updating individual properties.
The copyWith method creates a new DateTime object with values for the properties DateTime.year, DateTime.hour, etc, provided by similarly named arguments, or using the existing value of the property if no argument, or null
, is provided.
Example:
final now = DateTime.now();
final sameTimeOnMoonLandingDay =
now.copyWith(year: 1969, month: 07, day: 20);
Like for the DateTime and DateTime.utc constructors, which this operation uses to create the new value, property values are allowed to overflow or underflow the range of the property (like a month
outside the 1 to 12 range), which can affect the more significant properties (for example, a month of 13 will result in the month of January of the next year.)
Notice also that if the result is a local-time DateTime, seasonal time-zone adjustments (daylight saving) can cause some combinations of dates, hours and minutes to not exist, or to exist more than once. In the former case, a corresponding time in one of the two adjacent time zones is used instead. In the latter, one of the two options is chosen.
Implementation
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,
);
}