Inheritance: JsObject
Beispiel #1
0
        public JsDate Construct(JsInstance[] parameters)
        {
            JsDate result = null;

            if (parameters.Length == 1)
            {
                if ((parameters[0].Class == JsNumber.TYPEOF || parameters[0].Class == JsDate.TYPEOF) && double.IsNaN(parameters[0].ToNumber()))
                {
                    result = New(double.NaN);
                }
                else if (parameters[0].Class == JsNumber.TYPEOF)
                {
                    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);
        }
Beispiel #2
0
 public override double ToNumber()
 {
     return(JsDate.DateToDouble(this.value));
 }