The Date setters always converted their result as local time. Use the
setter's UTC flag instead.
Remove the intermediate range check in njs_make_date(). TimeClip already
checks the result after local-to-UTC conversion, which can move a value
across the valid time range boundary.
time += days * 86400000.0;
- if (time < -8.64e15 || time > 8.64e15) {
- return NAN;
- }
-
if (local) {
time += njs_tz_offset(time) * 60000;
}
} while (--left);
- time = njs_make_date(tm, 1);
+ time = njs_make_date(tm, magic & 0x40);
done:
.prototype_props = &njs_date_prototype_init,
.prototype_value = { .object = { .type = NJS_OBJECT } },
};
-
"d.getTime()"),
njs_str("1299733323625") },
+ { njs_str("var d = new Date(Date.UTC(2016, 6)); d.setUTCMonth(6, 6);"
+ "d.getTime()"),
+ njs_str("1467763200000") },
+
{ njs_str("var d = new Date(1308895323625); d.setMonth(2);"
"d.getTime()"),
njs_str("1300942923625") },