Skip to content

Commit 0630fde

Browse files
committed
Also use relative date when comparing durations when unit is month
1 parent 485d3cc commit 0630fde

File tree

1 file changed

+11
-0
lines changed

1 file changed

+11
-0
lines changed

polyfill/lib/ecmascript.mjs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3251,6 +3251,17 @@ function NudgeToCalendarUnit(
32513251
r2 = months + increment * sign;
32523252
startDuration = AdjustDateDurationRecord(duration.date, 0, 0, r1);
32533253
endDuration = AdjustDateDurationRecord(duration.date, 0, 0, r2);
3254+
var cmpResult = compare(CombineDateAndTimeDuration(endDuration, TimeDuration.ZERO),
3255+
duration);
3256+
if ((sign > 0 && cmpResult != 1) || (sign < 0 && cmpResult != -1)) {
3257+
r1 = r2;
3258+
r2 = months + (increment * 2) * sign;
3259+
endDuration = AdjustDateDurationRecord(duration.date, 0, 0, r2);
3260+
cmpResult = compare(CombineDateAndTimeDuration(endDuration, TimeDuration.ZERO), duration);
3261+
assert((sign > 0 && cmpResult == 1) || (sign < 0 && cmpResult == -1),
3262+
"nudgeToCalendarUnit: couldn't find larger duration");
3263+
startDuration = AdjustDateDurationRecord(duration.date, 0, 0, r1);
3264+
}
32543265
break;
32553266
}
32563267
case 'week': {

0 commit comments

Comments
 (0)