private bool ParseDate(string p, IFormatProvider culture, out double result)
{
DateTime d = new DateTime(0, DateTimeKind.Utc); ;
result = 0;
if (DateTime.TryParse(p, culture, DateTimeStyles.None, out d)) {
result = New(d).ToNumber();
return true;
}
if (DateTime.TryParseExact(p, JsDate.FORMAT, culture, DateTimeStyles.None, out d)) {
result = New(d).ToNumber();
return true;
}
DateTime ld;
if (DateTime.TryParseExact(p, JsDate.DATEFORMAT, culture, DateTimeStyles.None, out ld)) {
d = d.AddTicks(ld.Ticks);
}
if (DateTime.TryParseExact(p, JsDate.TIMEFORMAT, culture, DateTimeStyles.None, out ld)) {
d = d.AddTicks(ld.Ticks);
}
if (d.Ticks > 0) {
result = New(d).ToNumber();
return true;
}
return true;
}