Jint.Native.JsDateConstructor.Construct C# (CSharp) Method

Construct() public method

public Construct ( JsInstance parameters ) : JsDate
parameters JsInstance
return JsDate
        public JsDate Construct(JsInstance[] parameters)
        {
            JsDate result = null;

            if (parameters.Length == 1) {
                if ((parameters[0].Class == JsInstance.CLASS_NUMBER || parameters[0].Class == JsInstance.CLASS_OBJECT) && double.IsNaN(parameters[0].ToNumber())) {
                    result = New(double.NaN);
                }
                else if (parameters[0].Class == JsInstance.CLASS_NUMBER)
                {
                    result = New(parameters[0].ToNumber());
                }
                else {
                    double d;
                    if (ParseDate(parameters[0].ToString(), CultureInfo.InvariantCulture, out d)) {
                        result = New(d);
                    }
                    else if (ParseDate(parameters[0].ToString(), CultureInfo.CurrentCulture, out d)) {
                        result = New(d);
                    }
                    else {
                        result = New(0);
                    }
                }
            }
            else if (parameters.Length > 1) {
                DateTime d = new DateTime(0, DateTimeKind.Local);

                if (parameters.Length > 0) {
                    int year = (int)parameters[0].ToNumber() - 1;
                    if (year < 100) {
                        year += 1900;
                    }

                    d = d.AddYears(year);
                }

                if (parameters.Length > 1) {
                    d = d.AddMonths((int)parameters[1].ToNumber());
                }

                if (parameters.Length > 2) {
                    d = d.AddDays((int)parameters[2].ToNumber() - 1);
                }

                if (parameters.Length > 3) {
                    d = d.AddHours((int)parameters[3].ToNumber());
                }

                if (parameters.Length > 4) {
                    d = d.AddMinutes((int)parameters[4].ToNumber());
                }

                if (parameters.Length > 5) {
                    d = d.AddSeconds((int)parameters[5].ToNumber());
                }

                if (parameters.Length > 6) {
                    d = d.AddMilliseconds((int)parameters[6].ToNumber());
                }

                result = New(d);
            }
            else {
                result = New(DateTime.Now);
            }

            return result;
        }