15.9.3.1 new Date(year, month[, date[, hours[, minutes[, seconds[, ms]]]]])

2010-07-19

Date new Date(year:int|mixed, month:int|mixed[, date:int|mixed[, hours:int|mixed[, minutes:int|mixed[, seconds:int|mixed[, ms:int|mixed]]]]]])

Create a new Date object using the arguments to create the time (for [[PrimitiveValue]]) the new object represents.

The resulting object will have [[Prototype]] set to the original Date prototype object (15.9.4.1), [[Class]] is set to "Date", [[Extensible]] is set to true and [[PrimitiveValue]] is set to the ConstructDate function below.

Code: (Meta Ecma)
ConstructDate(year, month, date, hours, minutes, seconds, ms){
var y = ToNumber(year);
var m = ToNumber(month);
if (arguments.length >= 3) var dt = ToNumber(date);
else var dt = 1;
if (arguments.length >= 4) var h = ToNumber(hours);
else var h = 0;
if (arguments.length >= 5) var min = ToNumber(minutes);
else var min = 0;
if (arguments.length >= 6) var s = ToNumber(seconds);
else var s = 0;
if (arguments.length >= 7) var milli = ToNumber(ms);
else var milli = 0;
if (!isNaN(y) && 0 <= ToInteger(y) && ToInteger(y) < 99) var yr = 1900 + ToInteger(y);
else var yr = y;
var finalDate = MakeDate(MakeDay(yr, m, dt), MakeTime(h, min, s, milli));
return TimeClip(UTC(finalDate));
}