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); }
public override double ToNumber() { return(JsDate.DateToDouble(this.value)); }