Parcourir la source

Change JsDate.ToString to follow Date prototype logic (#1425)

fixes https://github.com/sebastienros/jint/issues/1424
Marko Lahma il y a 2 ans
Parent
commit
12bc40e361
2 fichiers modifiés avec 15 ajouts et 3 suppressions
  1. 14 1
      Jint.Tests/Runtime/DateTests.cs
  2. 1 2
      Jint/Native/JsDate.cs

+ 14 - 1
Jint.Tests/Runtime/DateTests.cs

@@ -67,7 +67,20 @@ public class DateTests
         var number = _engine.Evaluate("new Date() / 1").AsNumber();
         Assert.Equal((long) number, number);
 
-        var dateInstance  = _engine.Realm.Intrinsics.Date.Construct(123.456d);
+        var dateInstance = _engine.Realm.Intrinsics.Date.Construct(123.456d);
         Assert.Equal((long) dateInstance.DateValue, dateInstance.DateValue);
     }
+
+    [Fact]
+    public void ToStringFollowsJavaScriptFormat()
+    {
+        var engine = new Engine(
+            conf =>
+            {
+                conf.LocalTimeZone(TimeZoneInfo.FindSystemTimeZoneById("China Standard Time"));
+            });
+
+        Assert.Equal("Tue Feb 01 2022 00:00:00 GMT+0800 (China Standard Time)", engine.Evaluate("new Date(2022,1,1).toString()"));
+        Assert.Equal("Tue Feb 01 2022 00:00:00 GMT+0800 (China Standard Time)", engine.Evaluate("new Date(2022,1,1)").ToString());
+    }
 }

+ 1 - 2
Jint/Native/JsDate.cs

@@ -1,4 +1,3 @@
-using System.Globalization;
 using Jint.Native.Date;
 using Jint.Native.Object;
 using Jint.Runtime;
@@ -56,6 +55,6 @@ public sealed class JsDate : ObjectInstance
             return "Infinity";
         }
 
-        return ToDateTime().ToString("ddd MMM dd yyyy HH:mm:ss 'GMT'zzz", CultureInfo.InvariantCulture);
+        return TypeConverter.ToString(this);
     }
 }