|
@@ -2,50 +2,49 @@ using System.Globalization;
|
|
|
using Jint.Native.Object;
|
|
|
using Jint.Runtime;
|
|
|
|
|
|
-namespace Jint.Native.Date
|
|
|
+namespace Jint.Native.Date;
|
|
|
+
|
|
|
+public sealed class DateInstance : ObjectInstance
|
|
|
{
|
|
|
- public sealed class DateInstance : ObjectInstance
|
|
|
- {
|
|
|
- // Maximum allowed value to prevent DateTime overflow
|
|
|
- private static readonly double Max = (DateTime.MaxValue - new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalMilliseconds;
|
|
|
+ // Maximum allowed value to prevent DateTime overflow
|
|
|
+ private static readonly double Max = (DateTime.MaxValue - new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalMilliseconds;
|
|
|
|
|
|
- // Minimum allowed value to prevent DateTime overflow
|
|
|
- private static readonly double Min = -(new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc) - DateTime.MinValue).TotalMilliseconds;
|
|
|
+ // Minimum allowed value to prevent DateTime overflow
|
|
|
+ private static readonly double Min = -(new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc) - DateTime.MinValue).TotalMilliseconds;
|
|
|
|
|
|
- public DateInstance(Engine engine)
|
|
|
- : base(engine, ObjectClass.Date)
|
|
|
- {
|
|
|
- DateValue = double.NaN;
|
|
|
- }
|
|
|
+ public DateInstance(Engine engine, double dateValue)
|
|
|
+ : base(engine, ObjectClass.Date)
|
|
|
+ {
|
|
|
+ DateValue = dateValue;
|
|
|
+ }
|
|
|
|
|
|
- public DateTime ToDateTime()
|
|
|
+ public DateTime ToDateTime()
|
|
|
+ {
|
|
|
+ if (DateTimeRangeValid)
|
|
|
{
|
|
|
- if (DateTimeRangeValid)
|
|
|
- {
|
|
|
- return DateConstructor.Epoch.AddMilliseconds(DateValue);
|
|
|
- }
|
|
|
-
|
|
|
- ExceptionHelper.ThrowRangeError(_engine.Realm);
|
|
|
- return DateTime.MinValue;
|
|
|
+ return DateConstructor.Epoch.AddMilliseconds(DateValue);
|
|
|
}
|
|
|
|
|
|
- public double DateValue { get; internal set; }
|
|
|
+ ExceptionHelper.ThrowRangeError(_engine.Realm);
|
|
|
+ return DateTime.MinValue;
|
|
|
+ }
|
|
|
|
|
|
- internal bool DateTimeRangeValid => !double.IsNaN(DateValue) && DateValue <= Max && DateValue >= Min;
|
|
|
+ public double DateValue { get; internal set; }
|
|
|
|
|
|
- public override string ToString()
|
|
|
- {
|
|
|
- if (double.IsNaN(DateValue))
|
|
|
- {
|
|
|
- return "NaN";
|
|
|
- }
|
|
|
+ internal bool DateTimeRangeValid => !double.IsNaN(DateValue) && DateValue <= Max && DateValue >= Min;
|
|
|
|
|
|
- if (double.IsInfinity(DateValue))
|
|
|
- {
|
|
|
- return "Infinity";
|
|
|
- }
|
|
|
+ public override string ToString()
|
|
|
+ {
|
|
|
+ if (double.IsNaN(DateValue))
|
|
|
+ {
|
|
|
+ return "NaN";
|
|
|
+ }
|
|
|
|
|
|
- return ToDateTime().ToString("ddd MMM dd yyyy HH:mm:ss 'GMT'zzz", CultureInfo.InvariantCulture);
|
|
|
+ if (double.IsInfinity(DateValue))
|
|
|
+ {
|
|
|
+ return "Infinity";
|
|
|
}
|
|
|
+
|
|
|
+ return ToDateTime().ToString("ddd MMM dd yyyy HH:mm:ss 'GMT'zzz", CultureInfo.InvariantCulture);
|
|
|
}
|
|
|
}
|