diff --git a/base/comment-injection-typescript/test/inputs/schema/comment-injection-enum-nested-comment.schema/default/TopLevel.ts b/head/comment-injection-typescript/test/inputs/schema/comment-injection-enum-nested-comment.schema/default/TopLevel.ts
index 8b95765..934c40e 100644
--- a/base/comment-injection-typescript/test/inputs/schema/comment-injection-enum-nested-comment.schema/default/TopLevel.ts
+++ b/head/comment-injection-typescript/test/inputs/schema/comment-injection-enum-nested-comment.schema/default/TopLevel.ts
@@ -110,15 +110,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/comment-injection-typescript/test/inputs/schema/comment-injection-enum.schema/default/TopLevel.ts b/head/comment-injection-typescript/test/inputs/schema/comment-injection-enum.schema/default/TopLevel.ts
index a2cb294..2a64dc5 100644
--- a/base/comment-injection-typescript/test/inputs/schema/comment-injection-enum.schema/default/TopLevel.ts
+++ b/head/comment-injection-typescript/test/inputs/schema/comment-injection-enum.schema/default/TopLevel.ts
@@ -116,15 +116,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/comment-injection-typescript/test/inputs/schema/comment-injection-nested-comment.schema/default/TopLevel.ts b/head/comment-injection-typescript/test/inputs/schema/comment-injection-nested-comment.schema/default/TopLevel.ts
index 4e63492..504b925 100644
--- a/base/comment-injection-typescript/test/inputs/schema/comment-injection-nested-comment.schema/default/TopLevel.ts
+++ b/head/comment-injection-typescript/test/inputs/schema/comment-injection-nested-comment.schema/default/TopLevel.ts
@@ -108,15 +108,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/comment-injection-typescript/test/inputs/schema/comment-injection.schema/default/TopLevel.ts b/head/comment-injection-typescript/test/inputs/schema/comment-injection.schema/default/TopLevel.ts
index b741906..7b4e86e 100644
--- a/base/comment-injection-typescript/test/inputs/schema/comment-injection.schema/default/TopLevel.ts
+++ b/head/comment-injection-typescript/test/inputs/schema/comment-injection.schema/default/TopLevel.ts
@@ -136,15 +136,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/head/dart/test/inputs/json/priority/identifiers.json/use-json-annotation-true--1579285f69e0/TopLevel.dart b/head/dart/test/inputs/json/priority/identifiers.json/use-json-annotation-true--1579285f69e0/TopLevel.dart
new file mode 100644
index 0000000..95295e1
--- /dev/null
+++ b/head/dart/test/inputs/json/priority/identifiers.json/use-json-annotation-true--1579285f69e0/TopLevel.dart
@@ -0,0 +1,129 @@
+// To parse this JSON data, do
+//
+//     final topLevel = topLevelFromJson(jsonString);
+
+import 'package:json_annotation/json_annotation.dart';
+import 'dart:convert';
+
+part 'top_level.g.dart';
+
+TopLevel topLevelFromJson(String str) => TopLevel.fromJson(json.decode(str));
+
+String topLevelToJson(TopLevel data) => json.encode(data.toJson());
+
+@JsonSerializable()
+class TopLevel {
+    @JsonKey(name: "bla")
+    final TopLevelBla bla;
+    @JsonKey(name: "")
+    final Empty empty;
+    @JsonKey(name: "foo")
+    final Foo foo;
+    @JsonKey(name: "ThisIsA\ud83d\ude1cTough\"\n\nOne")
+    final ThisIsAToughOne thisIsAToughOne;
+    @JsonKey(name: "!")
+    final int topLevel;
+    @JsonKey(name: "Empty")
+    final EmptyClass topLevelEmpty;
+
+    TopLevel({
+        required this.bla,
+        required this.empty,
+        required this.foo,
+        required this.thisIsAToughOne,
+        required this.topLevel,
+        required this.topLevelEmpty,
+    });
+
+    factory TopLevel.fromJson(Map<String, dynamic> json) => _$TopLevelFromJson(json);
+
+    Map<String, dynamic> toJson() => _$TopLevelToJson(this);
+}
+
+@JsonSerializable()
+class TopLevelBla {
+    @JsonKey(name: "bar")
+    final int bar;
+
+    TopLevelBla({
+        required this.bar,
+    });
+
+    factory TopLevelBla.fromJson(Map<String, dynamic> json) => _$TopLevelBlaFromJson(json);
+
+    Map<String, dynamic> toJson() => _$TopLevelBlaToJson(this);
+}
+
+@JsonSerializable()
+class Empty {
+    @JsonKey(name: "x")
+    final int x;
+
+    Empty({
+        required this.x,
+    });
+
+    factory Empty.fromJson(Map<String, dynamic> json) => _$EmptyFromJson(json);
+
+    Map<String, dynamic> toJson() => _$EmptyToJson(this);
+}
+
+@JsonSerializable()
+class Foo {
+    @JsonKey(name: "bla")
+    final FooBla bla;
+    @JsonKey(name: "_")
+    final int empty;
+    @JsonKey(name: "__")
+    final int foo;
+
+    Foo({
+        required this.bla,
+        required this.empty,
+        required this.foo,
+    });
+
+    factory Foo.fromJson(Map<String, dynamic> json) => _$FooFromJson(json);
+
+    Map<String, dynamic> toJson() => _$FooToJson(this);
+}
+
+@JsonSerializable()
+class FooBla {
+    FooBla();
+
+    factory FooBla.fromJson(Map<String, dynamic> json) => _$FooBlaFromJson(json);
+
+    Map<String, dynamic> toJson() => _$FooBlaToJson(this);
+}
+
+@JsonSerializable()
+class ThisIsAToughOne {
+    @JsonKey(name: "\n\n\n")
+    final int empty;
+    @JsonKey(name: "\"")
+    final int thisIsAToughOne;
+
+    ThisIsAToughOne({
+        required this.empty,
+        required this.thisIsAToughOne,
+    });
+
+    factory ThisIsAToughOne.fromJson(Map<String, dynamic> json) => _$ThisIsAToughOneFromJson(json);
+
+    Map<String, dynamic> toJson() => _$ThisIsAToughOneToJson(this);
+}
+
+@JsonSerializable()
+class EmptyClass {
+    @JsonKey(name: "y")
+    final int y;
+
+    EmptyClass({
+        required this.y,
+    });
+
+    factory EmptyClass.fromJson(Map<String, dynamic> json) => _$EmptyClassFromJson(json);
+
+    Map<String, dynamic> toJson() => _$EmptyClassToJson(this);
+}
diff --git a/base/flow/test/inputs/json/misc/00c36.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/00c36.json/default/TopLevel.js
index 0e71c74..162dbc2 100644
--- a/base/flow/test/inputs/json/misc/00c36.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/00c36.json/default/TopLevel.js
@@ -124,15 +124,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/00ec5.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/00ec5.json/default/TopLevel.js
index 9543b68..4d45847 100644
--- a/base/flow/test/inputs/json/misc/00ec5.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/00ec5.json/default/TopLevel.js
@@ -163,15 +163,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/010b1.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/010b1.json/default/TopLevel.js
index c652537..89794b9 100644
--- a/base/flow/test/inputs/json/misc/010b1.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/010b1.json/default/TopLevel.js
@@ -106,15 +106,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/016af.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/016af.json/default/TopLevel.js
index db5355d..6cc839f 100644
--- a/base/flow/test/inputs/json/misc/016af.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/016af.json/default/TopLevel.js
@@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/033b1.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/033b1.json/default/TopLevel.js
index 7f8b227..3bb973a 100644
--- a/base/flow/test/inputs/json/misc/033b1.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/033b1.json/default/TopLevel.js
@@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/050b0.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/050b0.json/default/TopLevel.js
index aadf320..6c1c8a4 100644
--- a/base/flow/test/inputs/json/misc/050b0.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/050b0.json/default/TopLevel.js
@@ -152,15 +152,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/06bee.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/06bee.json/default/TopLevel.js
index 50e5e2a..e124161 100644
--- a/base/flow/test/inputs/json/misc/06bee.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/06bee.json/default/TopLevel.js
@@ -140,15 +140,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/07540.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/07540.json/default/TopLevel.js
index cce4f36..d9826f0 100644
--- a/base/flow/test/inputs/json/misc/07540.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/07540.json/default/TopLevel.js
@@ -99,15 +99,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/0779f.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/0779f.json/default/TopLevel.js
index f070002..c7ac2de 100644
--- a/base/flow/test/inputs/json/misc/0779f.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/0779f.json/default/TopLevel.js
@@ -129,15 +129,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/07c75.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/07c75.json/default/TopLevel.js
index bd2f506..a298561 100644
--- a/base/flow/test/inputs/json/misc/07c75.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/07c75.json/default/TopLevel.js
@@ -121,15 +121,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/09f54.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/09f54.json/default/TopLevel.js
index 01b739f..1eccbad 100644
--- a/base/flow/test/inputs/json/misc/09f54.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/09f54.json/default/TopLevel.js
@@ -109,15 +109,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/0a358.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/0a358.json/default/TopLevel.js
index 2acafe7..fdf8c01 100644
--- a/base/flow/test/inputs/json/misc/0a358.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/0a358.json/default/TopLevel.js
@@ -114,15 +114,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/0a91a.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/0a91a.json/default/TopLevel.js
index f4a17a2..82bc4f2 100644
--- a/base/flow/test/inputs/json/misc/0a91a.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/0a91a.json/default/TopLevel.js
@@ -316,15 +316,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/0b91a.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/0b91a.json/default/TopLevel.js
index eaf5088..209fdf8 100644
--- a/base/flow/test/inputs/json/misc/0b91a.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/0b91a.json/default/TopLevel.js
@@ -136,15 +136,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/0cffa.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/0cffa.json/default/TopLevel.js
index f3c332f..9b7923c 100644
--- a/base/flow/test/inputs/json/misc/0cffa.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/0cffa.json/default/TopLevel.js
@@ -211,15 +211,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/0e0c2.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/0e0c2.json/default/TopLevel.js
index 8a54859..407cad3 100644
--- a/base/flow/test/inputs/json/misc/0e0c2.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/0e0c2.json/default/TopLevel.js
@@ -173,15 +173,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/0fecf.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/0fecf.json/default/TopLevel.js
index 0c6e5e2..3ee24ee 100644
--- a/base/flow/test/inputs/json/misc/0fecf.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/0fecf.json/default/TopLevel.js
@@ -96,15 +96,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/10be4.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/10be4.json/default/TopLevel.js
index eb467d0..63eecca 100644
--- a/base/flow/test/inputs/json/misc/10be4.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/10be4.json/default/TopLevel.js
@@ -163,15 +163,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/112b5.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/112b5.json/default/TopLevel.js
index 6cc4baf..f9cab5b 100644
--- a/base/flow/test/inputs/json/misc/112b5.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/112b5.json/default/TopLevel.js
@@ -109,15 +109,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/127a1.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/127a1.json/default/TopLevel.js
index 24b0977..3e28e99 100644
--- a/base/flow/test/inputs/json/misc/127a1.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/127a1.json/default/TopLevel.js
@@ -210,15 +210,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/13d8d.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/13d8d.json/default/TopLevel.js
index cfac139..48593f5 100644
--- a/base/flow/test/inputs/json/misc/13d8d.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/13d8d.json/default/TopLevel.js
@@ -122,15 +122,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/14d38.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/14d38.json/default/TopLevel.js
index ac1d312..713e56b 100644
--- a/base/flow/test/inputs/json/misc/14d38.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/14d38.json/default/TopLevel.js
@@ -103,15 +103,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/167d6.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/167d6.json/default/TopLevel.js
index 7f8b227..3bb973a 100644
--- a/base/flow/test/inputs/json/misc/167d6.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/167d6.json/default/TopLevel.js
@@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/16bc5.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/16bc5.json/default/TopLevel.js
index 2a845c9..6dba12d 100644
--- a/base/flow/test/inputs/json/misc/16bc5.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/16bc5.json/default/TopLevel.js
@@ -194,15 +194,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/176f1.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/176f1.json/default/TopLevel.js
index 9bc9138..db78db6 100644
--- a/base/flow/test/inputs/json/misc/176f1.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/176f1.json/default/TopLevel.js
@@ -121,15 +121,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/1a7f5.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/1a7f5.json/default/TopLevel.js
index c652537..89794b9 100644
--- a/base/flow/test/inputs/json/misc/1a7f5.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/1a7f5.json/default/TopLevel.js
@@ -106,15 +106,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/1b28c.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/1b28c.json/default/TopLevel.js
index db5355d..6cc839f 100644
--- a/base/flow/test/inputs/json/misc/1b28c.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/1b28c.json/default/TopLevel.js
@@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/1b409.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/1b409.json/default/TopLevel.js
index 8f81ed5..56b0139 100644
--- a/base/flow/test/inputs/json/misc/1b409.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/1b409.json/default/TopLevel.js
@@ -187,15 +187,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/2465e.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/2465e.json/default/TopLevel.js
index c20e7dd..e283f26 100644
--- a/base/flow/test/inputs/json/misc/2465e.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/2465e.json/default/TopLevel.js
@@ -169,15 +169,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/24f52.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/24f52.json/default/TopLevel.js
index f070002..c7ac2de 100644
--- a/base/flow/test/inputs/json/misc/24f52.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/24f52.json/default/TopLevel.js
@@ -129,15 +129,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/262f0.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/262f0.json/default/TopLevel.js
index 7e5b3b3..1dc4430 100644
--- a/base/flow/test/inputs/json/misc/262f0.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/262f0.json/default/TopLevel.js
@@ -199,15 +199,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/26b49.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/26b49.json/default/TopLevel.js
index 23e8c62..c9ba533 100644
--- a/base/flow/test/inputs/json/misc/26b49.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/26b49.json/default/TopLevel.js
@@ -208,15 +208,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/26c9c.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/26c9c.json/default/TopLevel.js
index c060755..d4b28ed 100644
--- a/base/flow/test/inputs/json/misc/26c9c.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/26c9c.json/default/TopLevel.js
@@ -283,15 +283,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/27332.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/27332.json/default/TopLevel.js
index d6bb007..934296a 100644
--- a/base/flow/test/inputs/json/misc/27332.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/27332.json/default/TopLevel.js
@@ -249,15 +249,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/29f47.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/29f47.json/default/TopLevel.js
index 0a117e0..6c6029e 100644
--- a/base/flow/test/inputs/json/misc/29f47.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/29f47.json/default/TopLevel.js
@@ -235,15 +235,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/2d4e2.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/2d4e2.json/default/TopLevel.js
index 3ee6c8f..50f7c40 100644
--- a/base/flow/test/inputs/json/misc/2d4e2.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/2d4e2.json/default/TopLevel.js
@@ -203,15 +203,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/2df80.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/2df80.json/default/TopLevel.js
index 18862c1..e8a7f8a 100644
--- a/base/flow/test/inputs/json/misc/2df80.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/2df80.json/default/TopLevel.js
@@ -169,15 +169,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/31189.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/31189.json/default/TopLevel.js
index 1c659a2..4fb8245 100644
--- a/base/flow/test/inputs/json/misc/31189.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/31189.json/default/TopLevel.js
@@ -124,15 +124,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/32431.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/32431.json/default/TopLevel.js
index 654a594..9b836ab 100644
--- a/base/flow/test/inputs/json/misc/32431.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/32431.json/default/TopLevel.js
@@ -167,15 +167,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/32d5c.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/32d5c.json/default/TopLevel.js
index 79919b5..8f57115 100644
--- a/base/flow/test/inputs/json/misc/32d5c.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/32d5c.json/default/TopLevel.js
@@ -105,15 +105,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/337ed.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/337ed.json/default/TopLevel.js
index d6362df..400a636 100644
--- a/base/flow/test/inputs/json/misc/337ed.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/337ed.json/default/TopLevel.js
@@ -164,15 +164,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/33d2e.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/33d2e.json/default/TopLevel.js
index ed1e926..954c924 100644
--- a/base/flow/test/inputs/json/misc/33d2e.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/33d2e.json/default/TopLevel.js
@@ -149,15 +149,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/34702.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/34702.json/default/TopLevel.js
index 25756ac..f14ce92 100644
--- a/base/flow/test/inputs/json/misc/34702.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/34702.json/default/TopLevel.js
@@ -184,15 +184,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/3536b.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/3536b.json/default/TopLevel.js
index 4f56c1f..4c5794e 100644
--- a/base/flow/test/inputs/json/misc/3536b.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/3536b.json/default/TopLevel.js
@@ -131,15 +131,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/3659d.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/3659d.json/default/TopLevel.js
index db5355d..6cc839f 100644
--- a/base/flow/test/inputs/json/misc/3659d.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/3659d.json/default/TopLevel.js
@@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/36d5d.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/36d5d.json/default/TopLevel.js
index f070002..c7ac2de 100644
--- a/base/flow/test/inputs/json/misc/36d5d.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/36d5d.json/default/TopLevel.js
@@ -129,15 +129,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/3a6b3.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/3a6b3.json/default/TopLevel.js
index f070002..c7ac2de 100644
--- a/base/flow/test/inputs/json/misc/3a6b3.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/3a6b3.json/default/TopLevel.js
@@ -129,15 +129,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/3e9a3.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/3e9a3.json/default/TopLevel.js
index 9bc9138..db78db6 100644
--- a/base/flow/test/inputs/json/misc/3e9a3.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/3e9a3.json/default/TopLevel.js
@@ -121,15 +121,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/3f1ce.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/3f1ce.json/default/TopLevel.js
index db7ef24..870cf6a 100644
--- a/base/flow/test/inputs/json/misc/3f1ce.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/3f1ce.json/default/TopLevel.js
@@ -197,15 +197,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/421d4.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/421d4.json/default/TopLevel.js
index 30b31c6..5d852e7 100644
--- a/base/flow/test/inputs/json/misc/421d4.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/421d4.json/default/TopLevel.js
@@ -210,15 +210,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/437e7.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/437e7.json/default/TopLevel.js
index 257be66..46aad64 100644
--- a/base/flow/test/inputs/json/misc/437e7.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/437e7.json/default/TopLevel.js
@@ -205,15 +205,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/43970.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/43970.json/default/TopLevel.js
index 62e976e..96da4f2 100644
--- a/base/flow/test/inputs/json/misc/43970.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/43970.json/default/TopLevel.js
@@ -100,15 +100,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/43eaf.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/43eaf.json/default/TopLevel.js
index 7f8b227..3bb973a 100644
--- a/base/flow/test/inputs/json/misc/43eaf.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/43eaf.json/default/TopLevel.js
@@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/458db.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/458db.json/default/TopLevel.js
index 1b3e740..602758a 100644
--- a/base/flow/test/inputs/json/misc/458db.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/458db.json/default/TopLevel.js
@@ -138,15 +138,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/4961a.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/4961a.json/default/TopLevel.js
index db5355d..6cc839f 100644
--- a/base/flow/test/inputs/json/misc/4961a.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/4961a.json/default/TopLevel.js
@@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/4a0d7.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/4a0d7.json/default/TopLevel.js
index db5355d..6cc839f 100644
--- a/base/flow/test/inputs/json/misc/4a0d7.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/4a0d7.json/default/TopLevel.js
@@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/4a455.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/4a455.json/default/TopLevel.js
index 6770476..af5a140 100644
--- a/base/flow/test/inputs/json/misc/4a455.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/4a455.json/default/TopLevel.js
@@ -139,15 +139,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/4c547.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/4c547.json/default/TopLevel.js
index 2a845c9..6dba12d 100644
--- a/base/flow/test/inputs/json/misc/4c547.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/4c547.json/default/TopLevel.js
@@ -194,15 +194,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/4d6fb.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/4d6fb.json/default/TopLevel.js
index d9871d9..e9dc36d 100644
--- a/base/flow/test/inputs/json/misc/4d6fb.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/4d6fb.json/default/TopLevel.js
@@ -244,15 +244,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/4e336.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/4e336.json/default/TopLevel.js
index db5355d..6cc839f 100644
--- a/base/flow/test/inputs/json/misc/4e336.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/4e336.json/default/TopLevel.js
@@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/54147.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/54147.json/default/TopLevel.js
index 13ea528..ebba231 100644
--- a/base/flow/test/inputs/json/misc/54147.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/54147.json/default/TopLevel.js
@@ -112,15 +112,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/54d32.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/54d32.json/default/TopLevel.js
index fd88d22..d884bb6 100644
--- a/base/flow/test/inputs/json/misc/54d32.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/54d32.json/default/TopLevel.js
@@ -118,15 +118,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/570ec.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/570ec.json/default/TopLevel.js
index 7eedb90..df6a35e 100644
--- a/base/flow/test/inputs/json/misc/570ec.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/570ec.json/default/TopLevel.js
@@ -131,15 +131,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/5dd0d.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/5dd0d.json/default/TopLevel.js
index f070002..c7ac2de 100644
--- a/base/flow/test/inputs/json/misc/5dd0d.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/5dd0d.json/default/TopLevel.js
@@ -129,15 +129,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/5eae5.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/5eae5.json/default/TopLevel.js
index 3719239..2d34873 100644
--- a/base/flow/test/inputs/json/misc/5eae5.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/5eae5.json/default/TopLevel.js
@@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/5eb20.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/5eb20.json/default/TopLevel.js
index f070002..c7ac2de 100644
--- a/base/flow/test/inputs/json/misc/5eb20.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/5eb20.json/default/TopLevel.js
@@ -129,15 +129,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/5f3a1.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/5f3a1.json/default/TopLevel.js
index 7f8b227..3bb973a 100644
--- a/base/flow/test/inputs/json/misc/5f3a1.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/5f3a1.json/default/TopLevel.js
@@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/5f7fe.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/5f7fe.json/default/TopLevel.js
index 01d4959..e0c97d0 100644
--- a/base/flow/test/inputs/json/misc/5f7fe.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/5f7fe.json/default/TopLevel.js
@@ -284,15 +284,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/617e8.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/617e8.json/default/TopLevel.js
index ad95273..772ffb1 100644
--- a/base/flow/test/inputs/json/misc/617e8.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/617e8.json/default/TopLevel.js
@@ -283,15 +283,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/61b66.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/61b66.json/default/TopLevel.js
index f070002..c7ac2de 100644
--- a/base/flow/test/inputs/json/misc/61b66.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/61b66.json/default/TopLevel.js
@@ -129,15 +129,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/6260a.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/6260a.json/default/TopLevel.js
index 7f8b227..3bb973a 100644
--- a/base/flow/test/inputs/json/misc/6260a.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/6260a.json/default/TopLevel.js
@@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/65dec.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/65dec.json/default/TopLevel.js
index 7495466..5439a46 100644
--- a/base/flow/test/inputs/json/misc/65dec.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/65dec.json/default/TopLevel.js
@@ -183,15 +183,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/66121.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/66121.json/default/TopLevel.js
index 4701bbb..e1199ed 100644
--- a/base/flow/test/inputs/json/misc/66121.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/66121.json/default/TopLevel.js
@@ -140,15 +140,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/6617c.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/6617c.json/default/TopLevel.js
index b7ac429..2c7f4a6 100644
--- a/base/flow/test/inputs/json/misc/6617c.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/6617c.json/default/TopLevel.js
@@ -103,15 +103,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/67c03.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/67c03.json/default/TopLevel.js
index 9b6e364..d156dcd 100644
--- a/base/flow/test/inputs/json/misc/67c03.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/67c03.json/default/TopLevel.js
@@ -103,15 +103,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/68c30.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/68c30.json/default/TopLevel.js
index 12b467f..46cf69f 100644
--- a/base/flow/test/inputs/json/misc/68c30.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/68c30.json/default/TopLevel.js
@@ -127,15 +127,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/6c155.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/6c155.json/default/TopLevel.js
index a8bc970..c7e4986 100644
--- a/base/flow/test/inputs/json/misc/6c155.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/6c155.json/default/TopLevel.js
@@ -149,15 +149,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/6de06.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/6de06.json/default/TopLevel.js
index f246880..7b5ef08 100644
--- a/base/flow/test/inputs/json/misc/6de06.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/6de06.json/default/TopLevel.js
@@ -244,15 +244,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/6dec6.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/6dec6.json/default/TopLevel.js
index 917d91b..3c0767b 100644
--- a/base/flow/test/inputs/json/misc/6dec6.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/6dec6.json/default/TopLevel.js
@@ -199,15 +199,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/6eb00.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/6eb00.json/default/TopLevel.js
index dceceb2..7d2b1cf 100644
--- a/base/flow/test/inputs/json/misc/6eb00.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/6eb00.json/default/TopLevel.js
@@ -100,15 +100,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/70c77.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/70c77.json/default/TopLevel.js
index 7f8b227..3bb973a 100644
--- a/base/flow/test/inputs/json/misc/70c77.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/70c77.json/default/TopLevel.js
@@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/734ad.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/734ad.json/default/TopLevel.js
index 4e28aa3..1966444 100644
--- a/base/flow/test/inputs/json/misc/734ad.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/734ad.json/default/TopLevel.js
@@ -170,15 +170,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/75912.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/75912.json/default/TopLevel.js
index 7f8b227..3bb973a 100644
--- a/base/flow/test/inputs/json/misc/75912.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/75912.json/default/TopLevel.js
@@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/7681c.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/7681c.json/default/TopLevel.js
index 4368ba2..5ffad09 100644
--- a/base/flow/test/inputs/json/misc/7681c.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/7681c.json/default/TopLevel.js
@@ -212,15 +212,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/76ae1.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/76ae1.json/default/TopLevel.js
index 391dd6e..f4001ff 100644
--- a/base/flow/test/inputs/json/misc/76ae1.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/76ae1.json/default/TopLevel.js
@@ -280,15 +280,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/77392.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/77392.json/default/TopLevel.js
index 90aea47..ec26653 100644
--- a/base/flow/test/inputs/json/misc/77392.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/77392.json/default/TopLevel.js
@@ -123,15 +123,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/7d397.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/7d397.json/default/TopLevel.js
index 5c7bf60..daed49b 100644
--- a/base/flow/test/inputs/json/misc/7d397.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/7d397.json/default/TopLevel.js
@@ -171,15 +171,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/7d722.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/7d722.json/default/TopLevel.js
index f070002..c7ac2de 100644
--- a/base/flow/test/inputs/json/misc/7d722.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/7d722.json/default/TopLevel.js
@@ -129,15 +129,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/7df41.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/7df41.json/default/TopLevel.js
index 31a9cb6..46994ca 100644
--- a/base/flow/test/inputs/json/misc/7df41.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/7df41.json/default/TopLevel.js
@@ -106,15 +106,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/7dfa6.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/7dfa6.json/default/TopLevel.js
index db5355d..6cc839f 100644
--- a/base/flow/test/inputs/json/misc/7dfa6.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/7dfa6.json/default/TopLevel.js
@@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/7eb30.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/7eb30.json/default/TopLevel.js
index 35b206f..5932680 100644
--- a/base/flow/test/inputs/json/misc/7eb30.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/7eb30.json/default/TopLevel.js
@@ -140,15 +140,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/7f568.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/7f568.json/default/TopLevel.js
index 7e7520c..6f21818 100644
--- a/base/flow/test/inputs/json/misc/7f568.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/7f568.json/default/TopLevel.js
@@ -127,15 +127,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/7fbfb.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/7fbfb.json/default/TopLevel.js
index de694c7..d84d9a6 100644
--- a/base/flow/test/inputs/json/misc/7fbfb.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/7fbfb.json/default/TopLevel.js
@@ -124,15 +124,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/80aff.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/80aff.json/default/TopLevel.js
index 4ecb7b6..f58d28c 100644
--- a/base/flow/test/inputs/json/misc/80aff.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/80aff.json/default/TopLevel.js
@@ -115,15 +115,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/82509.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/82509.json/default/TopLevel.js
index 4963282..12cc75e 100644
--- a/base/flow/test/inputs/json/misc/82509.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/82509.json/default/TopLevel.js
@@ -96,15 +96,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/8592b.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/8592b.json/default/TopLevel.js
index 9927a1f..6ba8b46 100644
--- a/base/flow/test/inputs/json/misc/8592b.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/8592b.json/default/TopLevel.js
@@ -219,15 +219,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/88130.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/88130.json/default/TopLevel.js
index 2a845c9..6dba12d 100644
--- a/base/flow/test/inputs/json/misc/88130.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/88130.json/default/TopLevel.js
@@ -194,15 +194,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/8a62c.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/8a62c.json/default/TopLevel.js
index db5355d..6cc839f 100644
--- a/base/flow/test/inputs/json/misc/8a62c.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/8a62c.json/default/TopLevel.js
@@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/908db.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/908db.json/default/TopLevel.js
index 8a06165..0a7d4d3 100644
--- a/base/flow/test/inputs/json/misc/908db.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/908db.json/default/TopLevel.js
@@ -105,15 +105,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/9617f.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/9617f.json/default/TopLevel.js
index 7f8b227..3bb973a 100644
--- a/base/flow/test/inputs/json/misc/9617f.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/9617f.json/default/TopLevel.js
@@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/96f7c.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/96f7c.json/default/TopLevel.js
index c0df6d4..ef14be8 100644
--- a/base/flow/test/inputs/json/misc/96f7c.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/96f7c.json/default/TopLevel.js
@@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/9847b.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/9847b.json/default/TopLevel.js
index 1886171..6533855 100644
--- a/base/flow/test/inputs/json/misc/9847b.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/9847b.json/default/TopLevel.js
@@ -99,15 +99,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/9929c.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/9929c.json/default/TopLevel.js
index 2a845c9..6dba12d 100644
--- a/base/flow/test/inputs/json/misc/9929c.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/9929c.json/default/TopLevel.js
@@ -194,15 +194,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/996bd.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/996bd.json/default/TopLevel.js
index 96a33e7..f298931 100644
--- a/base/flow/test/inputs/json/misc/996bd.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/996bd.json/default/TopLevel.js
@@ -140,15 +140,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/9a503.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/9a503.json/default/TopLevel.js
index cbd1fd0..7a5b1c5 100644
--- a/base/flow/test/inputs/json/misc/9a503.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/9a503.json/default/TopLevel.js
@@ -126,15 +126,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/9ac3b.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/9ac3b.json/default/TopLevel.js
index bec1ab8..be0be36 100644
--- a/base/flow/test/inputs/json/misc/9ac3b.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/9ac3b.json/default/TopLevel.js
@@ -127,15 +127,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/9eed5.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/9eed5.json/default/TopLevel.js
index 9feaaab..83fa291 100644
--- a/base/flow/test/inputs/json/misc/9eed5.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/9eed5.json/default/TopLevel.js
@@ -125,15 +125,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/a0496.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/a0496.json/default/TopLevel.js
index d9a219f..5725050 100644
--- a/base/flow/test/inputs/json/misc/a0496.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/a0496.json/default/TopLevel.js
@@ -117,15 +117,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/a1eca.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/a1eca.json/default/TopLevel.js
index 2a845c9..6dba12d 100644
--- a/base/flow/test/inputs/json/misc/a1eca.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/a1eca.json/default/TopLevel.js
@@ -194,15 +194,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/a3d8c.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/a3d8c.json/default/TopLevel.js
index 7cd37eb..43e579f 100644
--- a/base/flow/test/inputs/json/misc/a3d8c.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/a3d8c.json/default/TopLevel.js
@@ -212,15 +212,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/a45b0.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/a45b0.json/default/TopLevel.js
index c652537..89794b9 100644
--- a/base/flow/test/inputs/json/misc/a45b0.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/a45b0.json/default/TopLevel.js
@@ -106,15 +106,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/a71df.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/a71df.json/default/TopLevel.js
index f070002..c7ac2de 100644
--- a/base/flow/test/inputs/json/misc/a71df.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/a71df.json/default/TopLevel.js
@@ -129,15 +129,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/a9691.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/a9691.json/default/TopLevel.js
index 7f8b227..3bb973a 100644
--- a/base/flow/test/inputs/json/misc/a9691.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/a9691.json/default/TopLevel.js
@@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/ab0d1.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/ab0d1.json/default/TopLevel.js
index c652537..89794b9 100644
--- a/base/flow/test/inputs/json/misc/ab0d1.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/ab0d1.json/default/TopLevel.js
@@ -106,15 +106,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/abb4b.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/abb4b.json/default/TopLevel.js
index db5355d..6cc839f 100644
--- a/base/flow/test/inputs/json/misc/abb4b.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/abb4b.json/default/TopLevel.js
@@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/ac944.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/ac944.json/default/TopLevel.js
index 7f8b227..3bb973a 100644
--- a/base/flow/test/inputs/json/misc/ac944.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/ac944.json/default/TopLevel.js
@@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/ad8be.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/ad8be.json/default/TopLevel.js
index eb467d0..63eecca 100644
--- a/base/flow/test/inputs/json/misc/ad8be.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/ad8be.json/default/TopLevel.js
@@ -163,15 +163,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/ae7f0.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/ae7f0.json/default/TopLevel.js
index 1f0bde1..f6846b2 100644
--- a/base/flow/test/inputs/json/misc/ae7f0.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/ae7f0.json/default/TopLevel.js
@@ -193,15 +193,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/ae9ca.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/ae9ca.json/default/TopLevel.js
index 12bb806..670c8dd 100644
--- a/base/flow/test/inputs/json/misc/ae9ca.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/ae9ca.json/default/TopLevel.js
@@ -142,15 +142,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/af2d1.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/af2d1.json/default/TopLevel.js
index 8591a30..a3bad4d 100644
--- a/base/flow/test/inputs/json/misc/af2d1.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/af2d1.json/default/TopLevel.js
@@ -204,15 +204,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/b4865.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/b4865.json/default/TopLevel.js
index 979e0b9..c90ee85 100644
--- a/base/flow/test/inputs/json/misc/b4865.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/b4865.json/default/TopLevel.js
@@ -124,15 +124,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/b6f2c.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/b6f2c.json/default/TopLevel.js
index db5355d..6cc839f 100644
--- a/base/flow/test/inputs/json/misc/b6f2c.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/b6f2c.json/default/TopLevel.js
@@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/b6fe5.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/b6fe5.json/default/TopLevel.js
index a65da14..e38f3a8 100644
--- a/base/flow/test/inputs/json/misc/b6fe5.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/b6fe5.json/default/TopLevel.js
@@ -99,15 +99,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/b9f64.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/b9f64.json/default/TopLevel.js
index 70249ff..8fa46b9 100644
--- a/base/flow/test/inputs/json/misc/b9f64.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/b9f64.json/default/TopLevel.js
@@ -96,15 +96,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/bb1ec.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/bb1ec.json/default/TopLevel.js
index db5355d..6cc839f 100644
--- a/base/flow/test/inputs/json/misc/bb1ec.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/bb1ec.json/default/TopLevel.js
@@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/be234.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/be234.json/default/TopLevel.js
index cf8697b..0cb3e64 100644
--- a/base/flow/test/inputs/json/misc/be234.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/be234.json/default/TopLevel.js
@@ -258,15 +258,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/c0356.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/c0356.json/default/TopLevel.js
index 9175274..c715046 100644
--- a/base/flow/test/inputs/json/misc/c0356.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/c0356.json/default/TopLevel.js
@@ -108,15 +108,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/c0a3a.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/c0a3a.json/default/TopLevel.js
index f070002..c7ac2de 100644
--- a/base/flow/test/inputs/json/misc/c0a3a.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/c0a3a.json/default/TopLevel.js
@@ -129,15 +129,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/c3303.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/c3303.json/default/TopLevel.js
index 48880ae..c0554e5 100644
--- a/base/flow/test/inputs/json/misc/c3303.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/c3303.json/default/TopLevel.js
@@ -209,15 +209,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/c6cfd.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/c6cfd.json/default/TopLevel.js
index a20feb4..ff97c25 100644
--- a/base/flow/test/inputs/json/misc/c6cfd.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/c6cfd.json/default/TopLevel.js
@@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/c8c7e.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/c8c7e.json/default/TopLevel.js
index c400a46..2655a97 100644
--- a/base/flow/test/inputs/json/misc/c8c7e.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/c8c7e.json/default/TopLevel.js
@@ -124,15 +124,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/cb0cc.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/cb0cc.json/default/TopLevel.js
index 094ca42..1ae3eae 100644
--- a/base/flow/test/inputs/json/misc/cb0cc.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/cb0cc.json/default/TopLevel.js
@@ -119,15 +119,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/cb81e.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/cb81e.json/default/TopLevel.js
index 3e2ebc1..d6a0df8 100644
--- a/base/flow/test/inputs/json/misc/cb81e.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/cb81e.json/default/TopLevel.js
@@ -104,15 +104,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/ccd18.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/ccd18.json/default/TopLevel.js
index f070002..c7ac2de 100644
--- a/base/flow/test/inputs/json/misc/ccd18.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/ccd18.json/default/TopLevel.js
@@ -129,15 +129,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/cd238.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/cd238.json/default/TopLevel.js
index f070002..c7ac2de 100644
--- a/base/flow/test/inputs/json/misc/cd238.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/cd238.json/default/TopLevel.js
@@ -129,15 +129,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/cd463.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/cd463.json/default/TopLevel.js
index 7f8b227..3bb973a 100644
--- a/base/flow/test/inputs/json/misc/cd463.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/cd463.json/default/TopLevel.js
@@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/cda6c.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/cda6c.json/default/TopLevel.js
index 1e455ed..bb61a30 100644
--- a/base/flow/test/inputs/json/misc/cda6c.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/cda6c.json/default/TopLevel.js
@@ -124,15 +124,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/cf0d8.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/cf0d8.json/default/TopLevel.js
index 2a845c9..6dba12d 100644
--- a/base/flow/test/inputs/json/misc/cf0d8.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/cf0d8.json/default/TopLevel.js
@@ -194,15 +194,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/cfbce.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/cfbce.json/default/TopLevel.js
index 7f8b227..3bb973a 100644
--- a/base/flow/test/inputs/json/misc/cfbce.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/cfbce.json/default/TopLevel.js
@@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/d0908.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/d0908.json/default/TopLevel.js
index db5355d..6cc839f 100644
--- a/base/flow/test/inputs/json/misc/d0908.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/d0908.json/default/TopLevel.js
@@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/d23d5.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/d23d5.json/default/TopLevel.js
index 21b87d9..61d1e3f 100644
--- a/base/flow/test/inputs/json/misc/d23d5.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/d23d5.json/default/TopLevel.js
@@ -114,15 +114,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/dbfb3.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/dbfb3.json/default/TopLevel.js
index e2ebf51..91a80f8 100644
--- a/base/flow/test/inputs/json/misc/dbfb3.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/dbfb3.json/default/TopLevel.js
@@ -198,15 +198,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/dc44f.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/dc44f.json/default/TopLevel.js
index 5059b79..ff5cb85 100644
--- a/base/flow/test/inputs/json/misc/dc44f.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/dc44f.json/default/TopLevel.js
@@ -222,15 +222,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/dd1ce.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/dd1ce.json/default/TopLevel.js
index 5059b79..ff5cb85 100644
--- a/base/flow/test/inputs/json/misc/dd1ce.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/dd1ce.json/default/TopLevel.js
@@ -222,15 +222,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/dec3a.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/dec3a.json/default/TopLevel.js
index 0d78187..2eed152 100644
--- a/base/flow/test/inputs/json/misc/dec3a.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/dec3a.json/default/TopLevel.js
@@ -157,15 +157,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/df957.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/df957.json/default/TopLevel.js
index 2a845c9..6dba12d 100644
--- a/base/flow/test/inputs/json/misc/df957.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/df957.json/default/TopLevel.js
@@ -194,15 +194,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/e0ac7.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/e0ac7.json/default/TopLevel.js
index f538e0d..ab2051d 100644
--- a/base/flow/test/inputs/json/misc/e0ac7.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/e0ac7.json/default/TopLevel.js
@@ -206,15 +206,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/e2915.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/e2915.json/default/TopLevel.js
index a8873fe..e774dfd 100644
--- a/base/flow/test/inputs/json/misc/e2915.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/e2915.json/default/TopLevel.js
@@ -197,15 +197,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/e2a58.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/e2a58.json/default/TopLevel.js
index 0c07a35..6ab5788 100644
--- a/base/flow/test/inputs/json/misc/e2a58.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/e2a58.json/default/TopLevel.js
@@ -99,15 +99,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/e324e.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/e324e.json/default/TopLevel.js
index 339fd01..6f4278c 100644
--- a/base/flow/test/inputs/json/misc/e324e.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/e324e.json/default/TopLevel.js
@@ -168,15 +168,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/e53b5.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/e53b5.json/default/TopLevel.js
index bdda029..15ed332 100644
--- a/base/flow/test/inputs/json/misc/e53b5.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/e53b5.json/default/TopLevel.js
@@ -124,15 +124,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/e64a0.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/e64a0.json/default/TopLevel.js
index 6cc4baf..f9cab5b 100644
--- a/base/flow/test/inputs/json/misc/e64a0.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/e64a0.json/default/TopLevel.js
@@ -109,15 +109,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/e8a0b.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/e8a0b.json/default/TopLevel.js
index c652537..89794b9 100644
--- a/base/flow/test/inputs/json/misc/e8a0b.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/e8a0b.json/default/TopLevel.js
@@ -106,15 +106,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/e8b04.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/e8b04.json/default/TopLevel.js
index 3dcd97d..1459701 100644
--- a/base/flow/test/inputs/json/misc/e8b04.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/e8b04.json/default/TopLevel.js
@@ -366,15 +366,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/ed095.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/ed095.json/default/TopLevel.js
index 4b9df8d..e58461b 100644
--- a/base/flow/test/inputs/json/misc/ed095.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/ed095.json/default/TopLevel.js
@@ -94,15 +94,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/f22f5.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/f22f5.json/default/TopLevel.js
index 0ec5458..ba01b2c 100644
--- a/base/flow/test/inputs/json/misc/f22f5.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/f22f5.json/default/TopLevel.js
@@ -190,15 +190,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/f3139.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/f3139.json/default/TopLevel.js
index 1886171..6533855 100644
--- a/base/flow/test/inputs/json/misc/f3139.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/f3139.json/default/TopLevel.js
@@ -99,15 +99,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/f3edf.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/f3edf.json/default/TopLevel.js
index c652537..89794b9 100644
--- a/base/flow/test/inputs/json/misc/f3edf.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/f3edf.json/default/TopLevel.js
@@ -106,15 +106,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/f466a.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/f466a.json/default/TopLevel.js
index c652537..89794b9 100644
--- a/base/flow/test/inputs/json/misc/f466a.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/f466a.json/default/TopLevel.js
@@ -106,15 +106,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/f6a65.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/f6a65.json/default/TopLevel.js
index 1c3b8d9..3b08027 100644
--- a/base/flow/test/inputs/json/misc/f6a65.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/f6a65.json/default/TopLevel.js
@@ -213,15 +213,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/f74d5.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/f74d5.json/default/TopLevel.js
index 59db03b..f85b0f6 100644
--- a/base/flow/test/inputs/json/misc/f74d5.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/f74d5.json/default/TopLevel.js
@@ -212,15 +212,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/f82d9.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/f82d9.json/default/TopLevel.js
index 69da6d1..f0c5302 100644
--- a/base/flow/test/inputs/json/misc/f82d9.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/f82d9.json/default/TopLevel.js
@@ -181,15 +181,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/f974d.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/f974d.json/default/TopLevel.js
index e2e2a25..639b694 100644
--- a/base/flow/test/inputs/json/misc/f974d.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/f974d.json/default/TopLevel.js
@@ -100,15 +100,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/faff5.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/faff5.json/default/TopLevel.js
index 2914689..2425915 100644
--- a/base/flow/test/inputs/json/misc/faff5.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/faff5.json/default/TopLevel.js
@@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/fcca3.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/fcca3.json/default/TopLevel.js
index b46bcf2..b7ca334 100644
--- a/base/flow/test/inputs/json/misc/fcca3.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/fcca3.json/default/TopLevel.js
@@ -309,15 +309,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/misc/fd329.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/fd329.json/default/TopLevel.js
index 01b739f..1eccbad 100644
--- a/base/flow/test/inputs/json/misc/fd329.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/fd329.json/default/TopLevel.js
@@ -109,15 +109,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/priority/blns-object.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/blns-object.json/default/TopLevel.js
index ab14aee..4486ec1 100644
--- a/base/flow/test/inputs/json/priority/blns-object.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/blns-object.json/default/TopLevel.js
@@ -691,15 +691,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/priority/bug2037.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/bug2037.json/default/TopLevel.js
index b9c168a..6524a5e 100644
--- a/base/flow/test/inputs/json/priority/bug2037.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/bug2037.json/default/TopLevel.js
@@ -107,15 +107,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/priority/bug2521.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/bug2521.json/default/TopLevel.js
index 87bfcc6..7d43d7b 100644
--- a/base/flow/test/inputs/json/priority/bug2521.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/bug2521.json/default/TopLevel.js
@@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/priority/bug2590.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/bug2590.json/default/TopLevel.js
index b65fa4d..31d6694 100644
--- a/base/flow/test/inputs/json/priority/bug2590.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/bug2590.json/default/TopLevel.js
@@ -102,15 +102,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/priority/bug2663.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/bug2663.json/default/TopLevel.js
index f623a2c..b0f0629 100644
--- a/base/flow/test/inputs/json/priority/bug2663.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/bug2663.json/default/TopLevel.js
@@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/priority/bug2793.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/bug2793.json/default/TopLevel.js
index 03ba001..40f8379 100644
--- a/base/flow/test/inputs/json/priority/bug2793.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/bug2793.json/default/TopLevel.js
@@ -105,15 +105,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/priority/bug427.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/bug427.json/default/TopLevel.js
index df7759e..87141a4 100644
--- a/base/flow/test/inputs/json/priority/bug427.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/bug427.json/default/TopLevel.js
@@ -707,15 +707,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/priority/bug790.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/bug790.json/default/TopLevel.js
index 4f5ec60..61aae0c 100644
--- a/base/flow/test/inputs/json/priority/bug790.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/bug790.json/default/TopLevel.js
@@ -103,15 +103,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/priority/bug855-short.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/bug855-short.json/default/TopLevel.js
index b3748a3..9228688 100644
--- a/base/flow/test/inputs/json/priority/bug855-short.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/bug855-short.json/default/TopLevel.js
@@ -100,15 +100,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/priority/bug863.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/bug863.json/default/TopLevel.js
index e8a3016..2d45f63 100644
--- a/base/flow/test/inputs/json/priority/bug863.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/bug863.json/default/TopLevel.js
@@ -182,15 +182,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/priority/coin-pairs.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/coin-pairs.json/default/TopLevel.js
index bf77cf7..ce2c15a 100644
--- a/base/flow/test/inputs/json/priority/coin-pairs.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/coin-pairs.json/default/TopLevel.js
@@ -108,15 +108,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/priority/combinations1.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/combinations1.json/default/TopLevel.js
index 876054b..892898a 100644
--- a/base/flow/test/inputs/json/priority/combinations1.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/combinations1.json/default/TopLevel.js
@@ -488,15 +488,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/priority/combinations1.json/nice-property-names-true--f4d7920ee2ce/TopLevel.js b/head/flow/test/inputs/json/priority/combinations1.json/nice-property-names-true--f4d7920ee2ce/TopLevel.js
index 329a47e..8bdf8ea 100644
--- a/base/flow/test/inputs/json/priority/combinations1.json/nice-property-names-true--f4d7920ee2ce/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/combinations1.json/nice-property-names-true--f4d7920ee2ce/TopLevel.js
@@ -488,15 +488,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/priority/combinations1.json/prefer-unions-false--a5053c0a486d/TopLevel.js b/head/flow/test/inputs/json/priority/combinations1.json/prefer-unions-false--a5053c0a486d/TopLevel.js
index 876054b..892898a 100644
--- a/base/flow/test/inputs/json/priority/combinations1.json/prefer-unions-false--a5053c0a486d/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/combinations1.json/prefer-unions-false--a5053c0a486d/TopLevel.js
@@ -488,15 +488,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/priority/combinations1.json/prefer-unknown-false--f1ab9e45d823/TopLevel.js b/head/flow/test/inputs/json/priority/combinations1.json/prefer-unknown-false--f1ab9e45d823/TopLevel.js
index 876054b..892898a 100644
--- a/base/flow/test/inputs/json/priority/combinations1.json/prefer-unknown-false--f1ab9e45d823/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/combinations1.json/prefer-unknown-false--f1ab9e45d823/TopLevel.js
@@ -488,15 +488,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/priority/combinations1.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.js b/head/flow/test/inputs/json/priority/combinations1.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.js
index 08861dc..3e621e4 100644
--- a/base/flow/test/inputs/json/priority/combinations1.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/combinations1.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.js
@@ -488,15 +488,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/priority/combinations2.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/combinations2.json/default/TopLevel.js
index f0b7b3b..5199f24 100644
--- a/base/flow/test/inputs/json/priority/combinations2.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/combinations2.json/default/TopLevel.js
@@ -440,15 +440,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/priority/combinations2.json/nice-property-names-true--f4d7920ee2ce/TopLevel.js b/head/flow/test/inputs/json/priority/combinations2.json/nice-property-names-true--f4d7920ee2ce/TopLevel.js
index e9bdd82..c66bd33 100644
--- a/base/flow/test/inputs/json/priority/combinations2.json/nice-property-names-true--f4d7920ee2ce/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/combinations2.json/nice-property-names-true--f4d7920ee2ce/TopLevel.js
@@ -440,15 +440,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/priority/combinations2.json/prefer-unions-false--a5053c0a486d/TopLevel.js b/head/flow/test/inputs/json/priority/combinations2.json/prefer-unions-false--a5053c0a486d/TopLevel.js
index f0b7b3b..5199f24 100644
--- a/base/flow/test/inputs/json/priority/combinations2.json/prefer-unions-false--a5053c0a486d/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/combinations2.json/prefer-unions-false--a5053c0a486d/TopLevel.js
@@ -440,15 +440,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/priority/combinations2.json/prefer-unknown-false--f1ab9e45d823/TopLevel.js b/head/flow/test/inputs/json/priority/combinations2.json/prefer-unknown-false--f1ab9e45d823/TopLevel.js
index f0b7b3b..5199f24 100644
--- a/base/flow/test/inputs/json/priority/combinations2.json/prefer-unknown-false--f1ab9e45d823/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/combinations2.json/prefer-unknown-false--f1ab9e45d823/TopLevel.js
@@ -440,15 +440,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/priority/combinations2.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.js b/head/flow/test/inputs/json/priority/combinations2.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.js
index 4ff8d04..e565a44 100644
--- a/base/flow/test/inputs/json/priority/combinations2.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/combinations2.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.js
@@ -440,15 +440,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/priority/combinations3.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/combinations3.json/default/TopLevel.js
index 62a366d..a84f903 100644
--- a/base/flow/test/inputs/json/priority/combinations3.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/combinations3.json/default/TopLevel.js
@@ -544,15 +544,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/priority/combinations3.json/nice-property-names-true--f4d7920ee2ce/TopLevel.js b/head/flow/test/inputs/json/priority/combinations3.json/nice-property-names-true--f4d7920ee2ce/TopLevel.js
index 0d1e5af..0be9d36 100644
--- a/base/flow/test/inputs/json/priority/combinations3.json/nice-property-names-true--f4d7920ee2ce/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/combinations3.json/nice-property-names-true--f4d7920ee2ce/TopLevel.js
@@ -544,15 +544,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/priority/combinations3.json/prefer-unions-false--a5053c0a486d/TopLevel.js b/head/flow/test/inputs/json/priority/combinations3.json/prefer-unions-false--a5053c0a486d/TopLevel.js
index 62a366d..a84f903 100644
--- a/base/flow/test/inputs/json/priority/combinations3.json/prefer-unions-false--a5053c0a486d/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/combinations3.json/prefer-unions-false--a5053c0a486d/TopLevel.js
@@ -544,15 +544,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/priority/combinations3.json/prefer-unknown-false--f1ab9e45d823/TopLevel.js b/head/flow/test/inputs/json/priority/combinations3.json/prefer-unknown-false--f1ab9e45d823/TopLevel.js
index 62a366d..a84f903 100644
--- a/base/flow/test/inputs/json/priority/combinations3.json/prefer-unknown-false--f1ab9e45d823/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/combinations3.json/prefer-unknown-false--f1ab9e45d823/TopLevel.js
@@ -544,15 +544,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/priority/combinations3.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.js b/head/flow/test/inputs/json/priority/combinations3.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.js
index a9df069..1e61073 100644
--- a/base/flow/test/inputs/json/priority/combinations3.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/combinations3.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.js
@@ -544,15 +544,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/priority/combinations4.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/combinations4.json/default/TopLevel.js
index 33e7906..fb135e5 100644
--- a/base/flow/test/inputs/json/priority/combinations4.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/combinations4.json/default/TopLevel.js
@@ -614,15 +614,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/priority/combinations4.json/nice-property-names-true--f4d7920ee2ce/TopLevel.js b/head/flow/test/inputs/json/priority/combinations4.json/nice-property-names-true--f4d7920ee2ce/TopLevel.js
index d3b7932..4859842 100644
--- a/base/flow/test/inputs/json/priority/combinations4.json/nice-property-names-true--f4d7920ee2ce/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/combinations4.json/nice-property-names-true--f4d7920ee2ce/TopLevel.js
@@ -614,15 +614,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/priority/combinations4.json/prefer-unions-false--a5053c0a486d/TopLevel.js b/head/flow/test/inputs/json/priority/combinations4.json/prefer-unions-false--a5053c0a486d/TopLevel.js
index 33e7906..fb135e5 100644
--- a/base/flow/test/inputs/json/priority/combinations4.json/prefer-unions-false--a5053c0a486d/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/combinations4.json/prefer-unions-false--a5053c0a486d/TopLevel.js
@@ -614,15 +614,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/priority/combinations4.json/prefer-unknown-false--f1ab9e45d823/TopLevel.js b/head/flow/test/inputs/json/priority/combinations4.json/prefer-unknown-false--f1ab9e45d823/TopLevel.js
index 33e7906..fb135e5 100644
--- a/base/flow/test/inputs/json/priority/combinations4.json/prefer-unknown-false--f1ab9e45d823/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/combinations4.json/prefer-unknown-false--f1ab9e45d823/TopLevel.js
@@ -614,15 +614,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/priority/combinations4.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.js b/head/flow/test/inputs/json/priority/combinations4.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.js
index 5f3899a..ecd1d0c 100644
--- a/base/flow/test/inputs/json/priority/combinations4.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/combinations4.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.js
@@ -614,15 +614,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/priority/combined-enum.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/combined-enum.json/default/TopLevel.js
index f490ccc..f1b13bb 100644
--- a/base/flow/test/inputs/json/priority/combined-enum.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/combined-enum.json/default/TopLevel.js
@@ -106,15 +106,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/priority/direct-recursive.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/direct-recursive.json/default/TopLevel.js
index fd48328..57ff834 100644
--- a/base/flow/test/inputs/json/priority/direct-recursive.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/direct-recursive.json/default/TopLevel.js
@@ -100,15 +100,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/priority/empty-enum.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/empty-enum.json/default/TopLevel.js
index 1b2f53e..3eb2ee8 100644
--- a/base/flow/test/inputs/json/priority/empty-enum.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/empty-enum.json/default/TopLevel.js
@@ -100,15 +100,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/priority/identifiers.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/identifiers.json/default/TopLevel.js
index 0ddcadd..7b97fb6 100644
--- a/base/flow/test/inputs/json/priority/identifiers.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/identifiers.json/default/TopLevel.js
@@ -127,15 +127,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/priority/issue2680-object-array.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/issue2680-object-array.json/default/TopLevel.js
index a974f35..3304381 100644
--- a/base/flow/test/inputs/json/priority/issue2680-object-array.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/issue2680-object-array.json/default/TopLevel.js
@@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/priority/issue2680-scalar-array.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/issue2680-scalar-array.json/default/TopLevel.js
index ca2e55f..57ef2c0 100644
--- a/base/flow/test/inputs/json/priority/issue2680-scalar-array.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/issue2680-scalar-array.json/default/TopLevel.js
@@ -94,15 +94,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/priority/keywords.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/keywords.json/default/TopLevel.js
index ac8c2f3..2029e3d 100644
--- a/base/flow/test/inputs/json/priority/keywords.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/keywords.json/default/TopLevel.js
@@ -1790,15 +1790,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/priority/kotlin-enum-class-case-collision.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/kotlin-enum-class-case-collision.json/default/TopLevel.js
index 9b95351..f80ddb1 100644
--- a/base/flow/test/inputs/json/priority/kotlin-enum-class-case-collision.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/kotlin-enum-class-case-collision.json/default/TopLevel.js
@@ -102,15 +102,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/priority/list.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/list.json/default/TopLevel.js
index 4e72a85..46b9ee9 100644
--- a/base/flow/test/inputs/json/priority/list.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/list.json/default/TopLevel.js
@@ -97,15 +97,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/priority/name-style.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/name-style.json/default/TopLevel.js
index 33b6c34..26fd739 100644
--- a/base/flow/test/inputs/json/priority/name-style.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/name-style.json/default/TopLevel.js
@@ -102,15 +102,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/priority/nbl-stats.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/nbl-stats.json/default/TopLevel.js
index 1d0f922..bc67efb 100644
--- a/base/flow/test/inputs/json/priority/nbl-stats.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/nbl-stats.json/default/TopLevel.js
@@ -428,15 +428,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/priority/nested-objects.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/nested-objects.json/default/TopLevel.js
index 458ad55..70f13bb 100644
--- a/base/flow/test/inputs/json/priority/nested-objects.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/nested-objects.json/default/TopLevel.js
@@ -97,15 +97,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/priority/no-classes.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/no-classes.json/default/TopLevel.js
index b6a98eb..a8973a2 100644
--- a/base/flow/test/inputs/json/priority/no-classes.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/no-classes.json/default/TopLevel.js
@@ -94,15 +94,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/priority/nst-test-suite.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/nst-test-suite.json/default/TopLevel.js
index 3f635af..5f71ad1 100644
--- a/base/flow/test/inputs/json/priority/nst-test-suite.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/nst-test-suite.json/default/TopLevel.js
@@ -236,15 +236,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/priority/number-map.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/number-map.json/default/TopLevel.js
index e418f00..cad18ef 100644
--- a/base/flow/test/inputs/json/priority/number-map.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/number-map.json/default/TopLevel.js
@@ -96,15 +96,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/priority/omit-empty.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/omit-empty.json/default/TopLevel.js
index 8323484..0273271 100644
--- a/base/flow/test/inputs/json/priority/omit-empty.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/omit-empty.json/default/TopLevel.js
@@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/priority/optional-union.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/optional-union.json/default/TopLevel.js
index ec0480b..643d117 100644
--- a/base/flow/test/inputs/json/priority/optional-union.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/optional-union.json/default/TopLevel.js
@@ -100,15 +100,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/priority/php-mixed-union.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/php-mixed-union.json/default/TopLevel.js
index 4efe9da..4e4662d 100644
--- a/base/flow/test/inputs/json/priority/php-mixed-union.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/php-mixed-union.json/default/TopLevel.js
@@ -102,15 +102,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/priority/php-validation.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/php-validation.json/default/TopLevel.js
index c47ae21..8b5565e 100644
--- a/base/flow/test/inputs/json/priority/php-validation.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/php-validation.json/default/TopLevel.js
@@ -100,15 +100,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/priority/recursive.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/recursive.json/default/TopLevel.js
index a6a57c5..3e0e277 100644
--- a/base/flow/test/inputs/json/priority/recursive.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/recursive.json/default/TopLevel.js
@@ -215,15 +215,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/priority/simple-identifiers.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/simple-identifiers.json/default/TopLevel.js
index 24b5a3a..4a7b9cd 100644
--- a/base/flow/test/inputs/json/priority/simple-identifiers.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/simple-identifiers.json/default/TopLevel.js
@@ -104,15 +104,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/priority/union-constructor-clash.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/union-constructor-clash.json/default/TopLevel.js
index 97cd8a4..a3987a9 100644
--- a/base/flow/test/inputs/json/priority/union-constructor-clash.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/union-constructor-clash.json/default/TopLevel.js
@@ -103,15 +103,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/priority/unions.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/unions.json/default/TopLevel.js
index df8c5ea..283c106 100644
--- a/base/flow/test/inputs/json/priority/unions.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/unions.json/default/TopLevel.js
@@ -106,15 +106,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/priority/url.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/url.json/default/TopLevel.js
index 7e73cc5..4c1410e 100644
--- a/base/flow/test/inputs/json/priority/url.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/url.json/default/TopLevel.js
@@ -97,15 +97,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/priority/uuids.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/uuids.json/default/TopLevel.js
index 283ab20..ff9d6dd 100644
--- a/base/flow/test/inputs/json/priority/uuids.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/uuids.json/default/TopLevel.js
@@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/samples/bitcoin-block.json/default/TopLevel.js b/head/flow/test/inputs/json/samples/bitcoin-block.json/default/TopLevel.js
index e2e2a25..639b694 100644
--- a/base/flow/test/inputs/json/samples/bitcoin-block.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/samples/bitcoin-block.json/default/TopLevel.js
@@ -100,15 +100,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/samples/copy-with-property.json/default/TopLevel.js b/head/flow/test/inputs/json/samples/copy-with-property.json/default/TopLevel.js
index 8a75c45..9f7c83e 100644
--- a/base/flow/test/inputs/json/samples/copy-with-property.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/samples/copy-with-property.json/default/TopLevel.js
@@ -97,15 +97,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/samples/getting-started.json/default/TopLevel.js b/head/flow/test/inputs/json/samples/getting-started.json/default/TopLevel.js
index 7639133..0a0728d 100644
--- a/base/flow/test/inputs/json/samples/getting-started.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/samples/getting-started.json/default/TopLevel.js
@@ -97,15 +97,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/samples/github-events.json/default/TopLevel.js b/head/flow/test/inputs/json/samples/github-events.json/default/TopLevel.js
index bc48377..f17022b 100644
--- a/base/flow/test/inputs/json/samples/github-events.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/samples/github-events.json/default/TopLevel.js
@@ -384,15 +384,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/samples/kitchen-sink.json/default/TopLevel.js b/head/flow/test/inputs/json/samples/kitchen-sink.json/default/TopLevel.js
index 7185086..536024f 100644
--- a/base/flow/test/inputs/json/samples/kitchen-sink.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/samples/kitchen-sink.json/default/TopLevel.js
@@ -128,15 +128,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/samples/null-safe.json/default/TopLevel.js b/head/flow/test/inputs/json/samples/null-safe.json/default/TopLevel.js
index 2ba2204..aacaf95 100644
--- a/base/flow/test/inputs/json/samples/null-safe.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/samples/null-safe.json/default/TopLevel.js
@@ -109,15 +109,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/samples/objc-control-characters.json/default/TopLevel.js b/head/flow/test/inputs/json/samples/objc-control-characters.json/default/TopLevel.js
index dbb7dba..d7e76ba 100644
--- a/base/flow/test/inputs/json/samples/objc-control-characters.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/samples/objc-control-characters.json/default/TopLevel.js
@@ -102,15 +102,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/samples/pokedex.json/default/TopLevel.js b/head/flow/test/inputs/json/samples/pokedex.json/default/TopLevel.js
index c11f2f9..74b9473 100644
--- a/base/flow/test/inputs/json/samples/pokedex.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/samples/pokedex.json/default/TopLevel.js
@@ -148,15 +148,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/samples/reddit.json/default/TopLevel.js b/head/flow/test/inputs/json/samples/reddit.json/default/TopLevel.js
index b2ae4c8..2f58942 100644
--- a/base/flow/test/inputs/json/samples/reddit.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/samples/reddit.json/default/TopLevel.js
@@ -237,15 +237,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/samples/simple-object.json/default/TopLevel.js b/head/flow/test/inputs/json/samples/simple-object.json/default/TopLevel.js
index 09d01cc..381cd53 100644
--- a/base/flow/test/inputs/json/samples/simple-object.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/samples/simple-object.json/default/TopLevel.js
@@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/samples/spotify-album.json/default/TopLevel.js b/head/flow/test/inputs/json/samples/spotify-album.json/default/TopLevel.js
index 14e0663..99106e9 100644
--- a/base/flow/test/inputs/json/samples/spotify-album.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/samples/spotify-album.json/default/TopLevel.js
@@ -166,15 +166,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/samples/us-avg-temperatures.json/default/TopLevel.js b/head/flow/test/inputs/json/samples/us-avg-temperatures.json/default/TopLevel.js
index 01b739f..1eccbad 100644
--- a/base/flow/test/inputs/json/samples/us-avg-temperatures.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/samples/us-avg-temperatures.json/default/TopLevel.js
@@ -109,15 +109,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/flow/test/inputs/json/samples/us-senators.json/default/TopLevel.js b/head/flow/test/inputs/json/samples/us-senators.json/default/TopLevel.js
index d408f2e..a439e02 100644
--- a/base/flow/test/inputs/json/samples/us-senators.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/samples/us-senators.json/default/TopLevel.js
@@ -201,15 +201,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/graphql-flow/test/inputs/graphql/github1.graphql/default/TopLevel.js b/head/graphql-flow/test/inputs/graphql/github1.graphql/default/TopLevel.js
index 2454706..e0890fb 100644
--- a/base/graphql-flow/test/inputs/graphql/github1.graphql/default/TopLevel.js
+++ b/head/graphql-flow/test/inputs/graphql/github1.graphql/default/TopLevel.js
@@ -110,15 +110,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/graphql-flow/test/inputs/graphql/github2.graphql/default/TopLevel.js b/head/graphql-flow/test/inputs/graphql/github2.graphql/default/TopLevel.js
index eebb119..17c0615 100644
--- a/base/graphql-flow/test/inputs/graphql/github2.graphql/default/TopLevel.js
+++ b/head/graphql-flow/test/inputs/graphql/github2.graphql/default/TopLevel.js
@@ -119,15 +119,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/graphql-flow/test/inputs/graphql/github3.graphql/default/TopLevel.js b/head/graphql-flow/test/inputs/graphql/github3.graphql/default/TopLevel.js
index 6d11932..4e2fad5 100644
--- a/base/graphql-flow/test/inputs/graphql/github3.graphql/default/TopLevel.js
+++ b/head/graphql-flow/test/inputs/graphql/github3.graphql/default/TopLevel.js
@@ -127,15 +127,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/graphql-flow/test/inputs/graphql/github4.graphql/default/TopLevel.js b/head/graphql-flow/test/inputs/graphql/github4.graphql/default/TopLevel.js
index 14bb11d..6970141 100644
--- a/base/graphql-flow/test/inputs/graphql/github4.graphql/default/TopLevel.js
+++ b/head/graphql-flow/test/inputs/graphql/github4.graphql/default/TopLevel.js
@@ -128,15 +128,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/graphql-flow/test/inputs/graphql/github5.graphql/default/TopLevel.js b/head/graphql-flow/test/inputs/graphql/github5.graphql/default/TopLevel.js
index 585311d..6f93b2c 100644
--- a/base/graphql-flow/test/inputs/graphql/github5.graphql/default/TopLevel.js
+++ b/head/graphql-flow/test/inputs/graphql/github5.graphql/default/TopLevel.js
@@ -110,15 +110,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/graphql-flow/test/inputs/graphql/github6.graphql/default/TopLevel.js b/head/graphql-flow/test/inputs/graphql/github6.graphql/default/TopLevel.js
index 36c98e2..82910a8 100644
--- a/base/graphql-flow/test/inputs/graphql/github6.graphql/default/TopLevel.js
+++ b/head/graphql-flow/test/inputs/graphql/github6.graphql/default/TopLevel.js
@@ -110,15 +110,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/graphql-flow/test/inputs/graphql/github7.graphql/default/TopLevel.js b/head/graphql-flow/test/inputs/graphql/github7.graphql/default/TopLevel.js
index fe596d8..144e435 100644
--- a/base/graphql-flow/test/inputs/graphql/github7.graphql/default/TopLevel.js
+++ b/head/graphql-flow/test/inputs/graphql/github7.graphql/default/TopLevel.js
@@ -131,15 +131,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/graphql-flow/test/inputs/graphql/github8.graphql/default/TopLevel.js b/head/graphql-flow/test/inputs/graphql/github8.graphql/default/TopLevel.js
index f9b2c78..0a8d281 100644
--- a/base/graphql-flow/test/inputs/graphql/github8.graphql/default/TopLevel.js
+++ b/head/graphql-flow/test/inputs/graphql/github8.graphql/default/TopLevel.js
@@ -121,15 +121,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/graphql-flow/test/inputs/graphql/github9.graphql/default/TopLevel.js b/head/graphql-flow/test/inputs/graphql/github9.graphql/default/TopLevel.js
index e4b19c7..4244d70 100644
--- a/base/graphql-flow/test/inputs/graphql/github9.graphql/default/TopLevel.js
+++ b/head/graphql-flow/test/inputs/graphql/github9.graphql/default/TopLevel.js
@@ -128,15 +128,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/graphql-javascript/test/inputs/graphql/github1.graphql/default/TopLevel.js b/head/graphql-javascript/test/inputs/graphql/github1.graphql/default/TopLevel.js
index 4dbd987..a908803 100644
--- a/base/graphql-javascript/test/inputs/graphql/github1.graphql/default/TopLevel.js
+++ b/head/graphql-javascript/test/inputs/graphql/github1.graphql/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/graphql-javascript/test/inputs/graphql/github2.graphql/default/TopLevel.js b/head/graphql-javascript/test/inputs/graphql/github2.graphql/default/TopLevel.js
index a0d0d68..327d7fd 100644
--- a/base/graphql-javascript/test/inputs/graphql/github2.graphql/default/TopLevel.js
+++ b/head/graphql-javascript/test/inputs/graphql/github2.graphql/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/graphql-javascript/test/inputs/graphql/github3.graphql/default/TopLevel.js b/head/graphql-javascript/test/inputs/graphql/github3.graphql/default/TopLevel.js
index 3a2bcbd..1f86530 100644
--- a/base/graphql-javascript/test/inputs/graphql/github3.graphql/default/TopLevel.js
+++ b/head/graphql-javascript/test/inputs/graphql/github3.graphql/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/graphql-javascript/test/inputs/graphql/github4.graphql/default/TopLevel.js b/head/graphql-javascript/test/inputs/graphql/github4.graphql/default/TopLevel.js
index e9ca788..9eae08b 100644
--- a/base/graphql-javascript/test/inputs/graphql/github4.graphql/default/TopLevel.js
+++ b/head/graphql-javascript/test/inputs/graphql/github4.graphql/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/graphql-javascript/test/inputs/graphql/github5.graphql/default/TopLevel.js b/head/graphql-javascript/test/inputs/graphql/github5.graphql/default/TopLevel.js
index af11b11..420ace9 100644
--- a/base/graphql-javascript/test/inputs/graphql/github5.graphql/default/TopLevel.js
+++ b/head/graphql-javascript/test/inputs/graphql/github5.graphql/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/graphql-javascript/test/inputs/graphql/github6.graphql/default/TopLevel.js b/head/graphql-javascript/test/inputs/graphql/github6.graphql/default/TopLevel.js
index 01c9622..15c6fba 100644
--- a/base/graphql-javascript/test/inputs/graphql/github6.graphql/default/TopLevel.js
+++ b/head/graphql-javascript/test/inputs/graphql/github6.graphql/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/graphql-javascript/test/inputs/graphql/github7.graphql/default/TopLevel.js b/head/graphql-javascript/test/inputs/graphql/github7.graphql/default/TopLevel.js
index f16b880..4249720 100644
--- a/base/graphql-javascript/test/inputs/graphql/github7.graphql/default/TopLevel.js
+++ b/head/graphql-javascript/test/inputs/graphql/github7.graphql/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/graphql-javascript/test/inputs/graphql/github8.graphql/default/TopLevel.js b/head/graphql-javascript/test/inputs/graphql/github8.graphql/default/TopLevel.js
index f5cb283..fd6d83e 100644
--- a/base/graphql-javascript/test/inputs/graphql/github8.graphql/default/TopLevel.js
+++ b/head/graphql-javascript/test/inputs/graphql/github8.graphql/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/graphql-javascript/test/inputs/graphql/github9.graphql/default/TopLevel.js b/head/graphql-javascript/test/inputs/graphql/github9.graphql/default/TopLevel.js
index 9fb7cd9..f9c07fe 100644
--- a/base/graphql-javascript/test/inputs/graphql/github9.graphql/default/TopLevel.js
+++ b/head/graphql-javascript/test/inputs/graphql/github9.graphql/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/graphql-typescript/test/inputs/graphql/github1.graphql/default/TopLevel.ts b/head/graphql-typescript/test/inputs/graphql/github1.graphql/default/TopLevel.ts
index de60d92..578c5da 100644
--- a/base/graphql-typescript/test/inputs/graphql/github1.graphql/default/TopLevel.ts
+++ b/head/graphql-typescript/test/inputs/graphql/github1.graphql/default/TopLevel.ts
@@ -110,15 +110,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/graphql-typescript/test/inputs/graphql/github2.graphql/default/TopLevel.ts b/head/graphql-typescript/test/inputs/graphql/github2.graphql/default/TopLevel.ts
index b168793..c8dc669 100644
--- a/base/graphql-typescript/test/inputs/graphql/github2.graphql/default/TopLevel.ts
+++ b/head/graphql-typescript/test/inputs/graphql/github2.graphql/default/TopLevel.ts
@@ -119,15 +119,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/graphql-typescript/test/inputs/graphql/github3.graphql/default/TopLevel.ts b/head/graphql-typescript/test/inputs/graphql/github3.graphql/default/TopLevel.ts
index a3581d6..3a9ea88 100644
--- a/base/graphql-typescript/test/inputs/graphql/github3.graphql/default/TopLevel.ts
+++ b/head/graphql-typescript/test/inputs/graphql/github3.graphql/default/TopLevel.ts
@@ -124,15 +124,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/graphql-typescript/test/inputs/graphql/github4.graphql/default/TopLevel.ts b/head/graphql-typescript/test/inputs/graphql/github4.graphql/default/TopLevel.ts
index ca193d3..2365eaf 100644
--- a/base/graphql-typescript/test/inputs/graphql/github4.graphql/default/TopLevel.ts
+++ b/head/graphql-typescript/test/inputs/graphql/github4.graphql/default/TopLevel.ts
@@ -125,15 +125,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/graphql-typescript/test/inputs/graphql/github5.graphql/default/TopLevel.ts b/head/graphql-typescript/test/inputs/graphql/github5.graphql/default/TopLevel.ts
index b726396..acdc9b7 100644
--- a/base/graphql-typescript/test/inputs/graphql/github5.graphql/default/TopLevel.ts
+++ b/head/graphql-typescript/test/inputs/graphql/github5.graphql/default/TopLevel.ts
@@ -110,15 +110,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/graphql-typescript/test/inputs/graphql/github6.graphql/default/TopLevel.ts b/head/graphql-typescript/test/inputs/graphql/github6.graphql/default/TopLevel.ts
index 47c5aa5..020032a 100644
--- a/base/graphql-typescript/test/inputs/graphql/github6.graphql/default/TopLevel.ts
+++ b/head/graphql-typescript/test/inputs/graphql/github6.graphql/default/TopLevel.ts
@@ -110,15 +110,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/graphql-typescript/test/inputs/graphql/github7.graphql/default/TopLevel.ts b/head/graphql-typescript/test/inputs/graphql/github7.graphql/default/TopLevel.ts
index a3b6852..a0952a7 100644
--- a/base/graphql-typescript/test/inputs/graphql/github7.graphql/default/TopLevel.ts
+++ b/head/graphql-typescript/test/inputs/graphql/github7.graphql/default/TopLevel.ts
@@ -131,15 +131,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/graphql-typescript/test/inputs/graphql/github8.graphql/default/TopLevel.ts b/head/graphql-typescript/test/inputs/graphql/github8.graphql/default/TopLevel.ts
index 59df82b..09a4037 100644
--- a/base/graphql-typescript/test/inputs/graphql/github8.graphql/default/TopLevel.ts
+++ b/head/graphql-typescript/test/inputs/graphql/github8.graphql/default/TopLevel.ts
@@ -119,15 +119,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/graphql-typescript/test/inputs/graphql/github9.graphql/default/TopLevel.ts b/head/graphql-typescript/test/inputs/graphql/github9.graphql/default/TopLevel.ts
index fabfce4..9d653c2 100644
--- a/base/graphql-typescript/test/inputs/graphql/github9.graphql/default/TopLevel.ts
+++ b/head/graphql-typescript/test/inputs/graphql/github9.graphql/default/TopLevel.ts
@@ -122,15 +122,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/00c36.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/00c36.json/default/TopLevel.js
index a30e407..7bde2a3 100644
--- a/base/javascript/test/inputs/json/misc/00c36.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/00c36.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/00ec5.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/00ec5.json/default/TopLevel.js
index dffc01e..e58994e 100644
--- a/base/javascript/test/inputs/json/misc/00ec5.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/00ec5.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/010b1.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/010b1.json/default/TopLevel.js
index c70f471..5072650 100644
--- a/base/javascript/test/inputs/json/misc/010b1.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/010b1.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/016af.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/016af.json/default/TopLevel.js
index d4ce8bc..a8a2cb9 100644
--- a/base/javascript/test/inputs/json/misc/016af.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/016af.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/033b1.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/033b1.json/default/TopLevel.js
index ef1106d..b5bc8f9 100644
--- a/base/javascript/test/inputs/json/misc/033b1.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/033b1.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/050b0.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/050b0.json/default/TopLevel.js
index 50b1487..b031cf3 100644
--- a/base/javascript/test/inputs/json/misc/050b0.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/050b0.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/06bee.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/06bee.json/default/TopLevel.js
index 15ddd6e..4ed3634 100644
--- a/base/javascript/test/inputs/json/misc/06bee.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/06bee.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/07540.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/07540.json/default/TopLevel.js
index 1caf036..ae8169d 100644
--- a/base/javascript/test/inputs/json/misc/07540.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/07540.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/0779f.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/0779f.json/default/TopLevel.js
index 24a9e52..7ed503d 100644
--- a/base/javascript/test/inputs/json/misc/0779f.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/0779f.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/07c75.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/07c75.json/default/TopLevel.js
index e773737..8c10240 100644
--- a/base/javascript/test/inputs/json/misc/07c75.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/07c75.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/09f54.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/09f54.json/default/TopLevel.js
index 68bcd09..d23e2d7 100644
--- a/base/javascript/test/inputs/json/misc/09f54.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/09f54.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/0a358.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/0a358.json/default/TopLevel.js
index 7f09eea..cc5cbe0 100644
--- a/base/javascript/test/inputs/json/misc/0a358.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/0a358.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/0a91a.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/0a91a.json/default/TopLevel.js
index d6b2885..874e0da 100644
--- a/base/javascript/test/inputs/json/misc/0a91a.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/0a91a.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/0b91a.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/0b91a.json/default/TopLevel.js
index 837ba2c..3b6f02b 100644
--- a/base/javascript/test/inputs/json/misc/0b91a.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/0b91a.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/0cffa.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/0cffa.json/default/TopLevel.js
index c3f6a2b..4921f33 100644
--- a/base/javascript/test/inputs/json/misc/0cffa.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/0cffa.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/0e0c2.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/0e0c2.json/default/TopLevel.js
index 763bc2f..d74c94d 100644
--- a/base/javascript/test/inputs/json/misc/0e0c2.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/0e0c2.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/0fecf.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/0fecf.json/default/TopLevel.js
index 1db6010..c350529 100644
--- a/base/javascript/test/inputs/json/misc/0fecf.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/0fecf.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/10be4.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/10be4.json/default/TopLevel.js
index d4f8157..0f11bea 100644
--- a/base/javascript/test/inputs/json/misc/10be4.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/10be4.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/112b5.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/112b5.json/default/TopLevel.js
index fc0fbf9..988b2e3 100644
--- a/base/javascript/test/inputs/json/misc/112b5.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/112b5.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/127a1.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/127a1.json/default/TopLevel.js
index 8af6e14..5029be5 100644
--- a/base/javascript/test/inputs/json/misc/127a1.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/127a1.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/13d8d.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/13d8d.json/default/TopLevel.js
index e03b3be..1804248 100644
--- a/base/javascript/test/inputs/json/misc/13d8d.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/13d8d.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/14d38.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/14d38.json/default/TopLevel.js
index 72b6323..5d15cc8 100644
--- a/base/javascript/test/inputs/json/misc/14d38.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/14d38.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/167d6.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/167d6.json/default/TopLevel.js
index ef1106d..b5bc8f9 100644
--- a/base/javascript/test/inputs/json/misc/167d6.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/167d6.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/16bc5.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/16bc5.json/default/TopLevel.js
index 37accb2..acd1fb9 100644
--- a/base/javascript/test/inputs/json/misc/16bc5.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/16bc5.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/176f1.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/176f1.json/default/TopLevel.js
index b494d04..351e84a 100644
--- a/base/javascript/test/inputs/json/misc/176f1.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/176f1.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/1a7f5.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/1a7f5.json/default/TopLevel.js
index c70f471..5072650 100644
--- a/base/javascript/test/inputs/json/misc/1a7f5.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/1a7f5.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/1b28c.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/1b28c.json/default/TopLevel.js
index d4ce8bc..a8a2cb9 100644
--- a/base/javascript/test/inputs/json/misc/1b28c.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/1b28c.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/1b409.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/1b409.json/default/TopLevel.js
index 3b53185..8192aa5 100644
--- a/base/javascript/test/inputs/json/misc/1b409.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/1b409.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/2465e.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/2465e.json/default/TopLevel.js
index d7640aa..6a33ed2 100644
--- a/base/javascript/test/inputs/json/misc/2465e.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/2465e.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/24f52.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/24f52.json/default/TopLevel.js
index 24a9e52..7ed503d 100644
--- a/base/javascript/test/inputs/json/misc/24f52.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/24f52.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/262f0.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/262f0.json/default/TopLevel.js
index 960fab6..fdbfeea 100644
--- a/base/javascript/test/inputs/json/misc/262f0.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/262f0.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/26b49.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/26b49.json/default/TopLevel.js
index 964a00f..ca1a4e9 100644
--- a/base/javascript/test/inputs/json/misc/26b49.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/26b49.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/26c9c.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/26c9c.json/default/TopLevel.js
index 910593c..9ef5a1a 100644
--- a/base/javascript/test/inputs/json/misc/26c9c.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/26c9c.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/27332.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/27332.json/default/TopLevel.js
index 1d26410..06e876f 100644
--- a/base/javascript/test/inputs/json/misc/27332.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/27332.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/29f47.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/29f47.json/default/TopLevel.js
index 463704d..a46f0c7 100644
--- a/base/javascript/test/inputs/json/misc/29f47.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/29f47.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/2d4e2.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/2d4e2.json/default/TopLevel.js
index 7016e5f..dabaf9d 100644
--- a/base/javascript/test/inputs/json/misc/2d4e2.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/2d4e2.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/2df80.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/2df80.json/default/TopLevel.js
index aa18743..5fc4099 100644
--- a/base/javascript/test/inputs/json/misc/2df80.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/2df80.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/31189.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/31189.json/default/TopLevel.js
index 7f1ea76..d0130c4 100644
--- a/base/javascript/test/inputs/json/misc/31189.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/31189.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/32431.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/32431.json/default/TopLevel.js
index 4a65c2e..59f34aa 100644
--- a/base/javascript/test/inputs/json/misc/32431.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/32431.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/32d5c.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/32d5c.json/default/TopLevel.js
index 8b9589d..6f852a2 100644
--- a/base/javascript/test/inputs/json/misc/32d5c.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/32d5c.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/337ed.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/337ed.json/default/TopLevel.js
index 5ffbfd5..68c9784 100644
--- a/base/javascript/test/inputs/json/misc/337ed.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/337ed.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/33d2e.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/33d2e.json/default/TopLevel.js
index bd97778..6d3e524 100644
--- a/base/javascript/test/inputs/json/misc/33d2e.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/33d2e.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/34702.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/34702.json/default/TopLevel.js
index 6a9df1c..f70dc0b 100644
--- a/base/javascript/test/inputs/json/misc/34702.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/34702.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/3536b.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/3536b.json/default/TopLevel.js
index 61d0df6..5fc3e3b 100644
--- a/base/javascript/test/inputs/json/misc/3536b.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/3536b.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/3659d.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/3659d.json/default/TopLevel.js
index d4ce8bc..a8a2cb9 100644
--- a/base/javascript/test/inputs/json/misc/3659d.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/3659d.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/36d5d.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/36d5d.json/default/TopLevel.js
index 24a9e52..7ed503d 100644
--- a/base/javascript/test/inputs/json/misc/36d5d.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/36d5d.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/3a6b3.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/3a6b3.json/default/TopLevel.js
index 24a9e52..7ed503d 100644
--- a/base/javascript/test/inputs/json/misc/3a6b3.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/3a6b3.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/3e9a3.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/3e9a3.json/default/TopLevel.js
index b494d04..351e84a 100644
--- a/base/javascript/test/inputs/json/misc/3e9a3.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/3e9a3.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/3f1ce.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/3f1ce.json/default/TopLevel.js
index fc478aa..b6b4271 100644
--- a/base/javascript/test/inputs/json/misc/3f1ce.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/3f1ce.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/421d4.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/421d4.json/default/TopLevel.js
index e1f2ca0..e80c8de 100644
--- a/base/javascript/test/inputs/json/misc/421d4.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/421d4.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/437e7.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/437e7.json/default/TopLevel.js
index 242f300..0c1fbce 100644
--- a/base/javascript/test/inputs/json/misc/437e7.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/437e7.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/43970.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/43970.json/default/TopLevel.js
index 3be4b27..4e4bfd1 100644
--- a/base/javascript/test/inputs/json/misc/43970.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/43970.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/43eaf.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/43eaf.json/default/TopLevel.js
index ef1106d..b5bc8f9 100644
--- a/base/javascript/test/inputs/json/misc/43eaf.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/43eaf.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/458db.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/458db.json/default/TopLevel.js
index 883ca5f..0899bf9 100644
--- a/base/javascript/test/inputs/json/misc/458db.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/458db.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/4961a.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/4961a.json/default/TopLevel.js
index d4ce8bc..a8a2cb9 100644
--- a/base/javascript/test/inputs/json/misc/4961a.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/4961a.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/4a0d7.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/4a0d7.json/default/TopLevel.js
index d4ce8bc..a8a2cb9 100644
--- a/base/javascript/test/inputs/json/misc/4a0d7.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/4a0d7.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/4a455.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/4a455.json/default/TopLevel.js
index 599c6f0..405a535 100644
--- a/base/javascript/test/inputs/json/misc/4a455.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/4a455.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/4c547.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/4c547.json/default/TopLevel.js
index 37accb2..acd1fb9 100644
--- a/base/javascript/test/inputs/json/misc/4c547.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/4c547.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/4d6fb.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/4d6fb.json/default/TopLevel.js
index a2381b1..e8d6e16 100644
--- a/base/javascript/test/inputs/json/misc/4d6fb.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/4d6fb.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/4e336.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/4e336.json/default/TopLevel.js
index d4ce8bc..a8a2cb9 100644
--- a/base/javascript/test/inputs/json/misc/4e336.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/4e336.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/54147.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/54147.json/default/TopLevel.js
index 282de16..8f17e68 100644
--- a/base/javascript/test/inputs/json/misc/54147.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/54147.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/54d32.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/54d32.json/default/TopLevel.js
index 8959de9..d676c8d 100644
--- a/base/javascript/test/inputs/json/misc/54d32.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/54d32.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/570ec.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/570ec.json/default/TopLevel.js
index 17742ff..6ecbade 100644
--- a/base/javascript/test/inputs/json/misc/570ec.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/570ec.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/5dd0d.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/5dd0d.json/default/TopLevel.js
index 24a9e52..7ed503d 100644
--- a/base/javascript/test/inputs/json/misc/5dd0d.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/5dd0d.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/5eae5.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/5eae5.json/default/TopLevel.js
index d896bb4..f49ab65 100644
--- a/base/javascript/test/inputs/json/misc/5eae5.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/5eae5.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/5eb20.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/5eb20.json/default/TopLevel.js
index 24a9e52..7ed503d 100644
--- a/base/javascript/test/inputs/json/misc/5eb20.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/5eb20.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/5f3a1.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/5f3a1.json/default/TopLevel.js
index ef1106d..b5bc8f9 100644
--- a/base/javascript/test/inputs/json/misc/5f3a1.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/5f3a1.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/5f7fe.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/5f7fe.json/default/TopLevel.js
index 9df3290..69bd742 100644
--- a/base/javascript/test/inputs/json/misc/5f7fe.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/5f7fe.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/617e8.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/617e8.json/default/TopLevel.js
index 7af12b6..c7de983 100644
--- a/base/javascript/test/inputs/json/misc/617e8.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/617e8.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/61b66.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/61b66.json/default/TopLevel.js
index 24a9e52..7ed503d 100644
--- a/base/javascript/test/inputs/json/misc/61b66.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/61b66.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/6260a.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/6260a.json/default/TopLevel.js
index ef1106d..b5bc8f9 100644
--- a/base/javascript/test/inputs/json/misc/6260a.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/6260a.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/65dec.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/65dec.json/default/TopLevel.js
index 91e77b5..5747bf4 100644
--- a/base/javascript/test/inputs/json/misc/65dec.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/65dec.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/66121.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/66121.json/default/TopLevel.js
index 345176a..6b45478 100644
--- a/base/javascript/test/inputs/json/misc/66121.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/66121.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/6617c.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/6617c.json/default/TopLevel.js
index f732a3f..c893589 100644
--- a/base/javascript/test/inputs/json/misc/6617c.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/6617c.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/67c03.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/67c03.json/default/TopLevel.js
index e9478a6..8cc7071 100644
--- a/base/javascript/test/inputs/json/misc/67c03.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/67c03.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/68c30.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/68c30.json/default/TopLevel.js
index c6115f4..0e491bb 100644
--- a/base/javascript/test/inputs/json/misc/68c30.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/68c30.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/6c155.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/6c155.json/default/TopLevel.js
index c49da9e..787e7f9 100644
--- a/base/javascript/test/inputs/json/misc/6c155.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/6c155.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/6de06.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/6de06.json/default/TopLevel.js
index e2db8ba..bcdf20d 100644
--- a/base/javascript/test/inputs/json/misc/6de06.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/6de06.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/6dec6.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/6dec6.json/default/TopLevel.js
index 4ad8dec..c65a864 100644
--- a/base/javascript/test/inputs/json/misc/6dec6.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/6dec6.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/6eb00.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/6eb00.json/default/TopLevel.js
index f07129b..7d4472c 100644
--- a/base/javascript/test/inputs/json/misc/6eb00.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/6eb00.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/70c77.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/70c77.json/default/TopLevel.js
index ef1106d..b5bc8f9 100644
--- a/base/javascript/test/inputs/json/misc/70c77.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/70c77.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/734ad.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/734ad.json/default/TopLevel.js
index d4c501f..2dd7df3 100644
--- a/base/javascript/test/inputs/json/misc/734ad.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/734ad.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/75912.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/75912.json/default/TopLevel.js
index ef1106d..b5bc8f9 100644
--- a/base/javascript/test/inputs/json/misc/75912.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/75912.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/7681c.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/7681c.json/default/TopLevel.js
index 728f957..c3f9405 100644
--- a/base/javascript/test/inputs/json/misc/7681c.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/7681c.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/76ae1.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/76ae1.json/default/TopLevel.js
index ac901fc..177fff6 100644
--- a/base/javascript/test/inputs/json/misc/76ae1.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/76ae1.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/77392.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/77392.json/default/TopLevel.js
index 5c2c475..ad4ed63 100644
--- a/base/javascript/test/inputs/json/misc/77392.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/77392.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/7d397.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/7d397.json/default/TopLevel.js
index 1f3a99f..2ba2912 100644
--- a/base/javascript/test/inputs/json/misc/7d397.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/7d397.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/7d722.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/7d722.json/default/TopLevel.js
index 24a9e52..7ed503d 100644
--- a/base/javascript/test/inputs/json/misc/7d722.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/7d722.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/7df41.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/7df41.json/default/TopLevel.js
index fadb6bc..4989112 100644
--- a/base/javascript/test/inputs/json/misc/7df41.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/7df41.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/7dfa6.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/7dfa6.json/default/TopLevel.js
index d4ce8bc..a8a2cb9 100644
--- a/base/javascript/test/inputs/json/misc/7dfa6.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/7dfa6.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/7eb30.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/7eb30.json/default/TopLevel.js
index 1fab219..5a22b1c 100644
--- a/base/javascript/test/inputs/json/misc/7eb30.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/7eb30.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/7f568.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/7f568.json/default/TopLevel.js
index 8a0785d..03269ce 100644
--- a/base/javascript/test/inputs/json/misc/7f568.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/7f568.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/7fbfb.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/7fbfb.json/default/TopLevel.js
index e1b3970..6bca24b 100644
--- a/base/javascript/test/inputs/json/misc/7fbfb.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/7fbfb.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/80aff.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/80aff.json/default/TopLevel.js
index 6a088d9..e7036f9 100644
--- a/base/javascript/test/inputs/json/misc/80aff.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/80aff.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/82509.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/82509.json/default/TopLevel.js
index c13118a..59da7ef 100644
--- a/base/javascript/test/inputs/json/misc/82509.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/82509.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/8592b.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/8592b.json/default/TopLevel.js
index 2f6abf9..fb2baf4 100644
--- a/base/javascript/test/inputs/json/misc/8592b.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/8592b.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/88130.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/88130.json/default/TopLevel.js
index 37accb2..acd1fb9 100644
--- a/base/javascript/test/inputs/json/misc/88130.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/88130.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/8a62c.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/8a62c.json/default/TopLevel.js
index d4ce8bc..a8a2cb9 100644
--- a/base/javascript/test/inputs/json/misc/8a62c.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/8a62c.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/908db.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/908db.json/default/TopLevel.js
index 188ffb3..47fd602 100644
--- a/base/javascript/test/inputs/json/misc/908db.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/908db.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/9617f.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/9617f.json/default/TopLevel.js
index ef1106d..b5bc8f9 100644
--- a/base/javascript/test/inputs/json/misc/9617f.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/9617f.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/96f7c.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/96f7c.json/default/TopLevel.js
index f2fe37c..f4e553d 100644
--- a/base/javascript/test/inputs/json/misc/96f7c.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/96f7c.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/9847b.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/9847b.json/default/TopLevel.js
index 007f394..b2fbeb7 100644
--- a/base/javascript/test/inputs/json/misc/9847b.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/9847b.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/9929c.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/9929c.json/default/TopLevel.js
index 37accb2..acd1fb9 100644
--- a/base/javascript/test/inputs/json/misc/9929c.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/9929c.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/996bd.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/996bd.json/default/TopLevel.js
index b8297a4..a623356 100644
--- a/base/javascript/test/inputs/json/misc/996bd.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/996bd.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/9a503.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/9a503.json/default/TopLevel.js
index a30b595..b655f68 100644
--- a/base/javascript/test/inputs/json/misc/9a503.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/9a503.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/9ac3b.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/9ac3b.json/default/TopLevel.js
index 348756c..94ebbc9 100644
--- a/base/javascript/test/inputs/json/misc/9ac3b.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/9ac3b.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/9eed5.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/9eed5.json/default/TopLevel.js
index f469fdf..865f78d 100644
--- a/base/javascript/test/inputs/json/misc/9eed5.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/9eed5.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/a0496.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/a0496.json/default/TopLevel.js
index 195752c..4cbbdc6 100644
--- a/base/javascript/test/inputs/json/misc/a0496.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/a0496.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/a1eca.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/a1eca.json/default/TopLevel.js
index 37accb2..acd1fb9 100644
--- a/base/javascript/test/inputs/json/misc/a1eca.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/a1eca.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/a3d8c.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/a3d8c.json/default/TopLevel.js
index e3b11e7..47ca086 100644
--- a/base/javascript/test/inputs/json/misc/a3d8c.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/a3d8c.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/a45b0.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/a45b0.json/default/TopLevel.js
index c70f471..5072650 100644
--- a/base/javascript/test/inputs/json/misc/a45b0.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/a45b0.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/a71df.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/a71df.json/default/TopLevel.js
index 24a9e52..7ed503d 100644
--- a/base/javascript/test/inputs/json/misc/a71df.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/a71df.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/a9691.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/a9691.json/default/TopLevel.js
index ef1106d..b5bc8f9 100644
--- a/base/javascript/test/inputs/json/misc/a9691.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/a9691.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/ab0d1.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/ab0d1.json/default/TopLevel.js
index c70f471..5072650 100644
--- a/base/javascript/test/inputs/json/misc/ab0d1.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/ab0d1.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/abb4b.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/abb4b.json/default/TopLevel.js
index d4ce8bc..a8a2cb9 100644
--- a/base/javascript/test/inputs/json/misc/abb4b.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/abb4b.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/ac944.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/ac944.json/default/TopLevel.js
index ef1106d..b5bc8f9 100644
--- a/base/javascript/test/inputs/json/misc/ac944.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/ac944.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/ad8be.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/ad8be.json/default/TopLevel.js
index d4f8157..0f11bea 100644
--- a/base/javascript/test/inputs/json/misc/ad8be.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/ad8be.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/ae7f0.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/ae7f0.json/default/TopLevel.js
index 80df0e7..58067a6 100644
--- a/base/javascript/test/inputs/json/misc/ae7f0.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/ae7f0.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/ae9ca.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/ae9ca.json/default/TopLevel.js
index d355d66..a469f40 100644
--- a/base/javascript/test/inputs/json/misc/ae9ca.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/ae9ca.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/af2d1.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/af2d1.json/default/TopLevel.js
index 93eb648..61c13f0 100644
--- a/base/javascript/test/inputs/json/misc/af2d1.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/af2d1.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/b4865.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/b4865.json/default/TopLevel.js
index 9b65bad..c92e808 100644
--- a/base/javascript/test/inputs/json/misc/b4865.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/b4865.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/b6f2c.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/b6f2c.json/default/TopLevel.js
index d4ce8bc..a8a2cb9 100644
--- a/base/javascript/test/inputs/json/misc/b6f2c.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/b6f2c.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/b6fe5.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/b6fe5.json/default/TopLevel.js
index a3e3f00..b614cc0 100644
--- a/base/javascript/test/inputs/json/misc/b6fe5.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/b6fe5.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/b9f64.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/b9f64.json/default/TopLevel.js
index 6eac757..f1717c7 100644
--- a/base/javascript/test/inputs/json/misc/b9f64.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/b9f64.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/bb1ec.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/bb1ec.json/default/TopLevel.js
index d4ce8bc..a8a2cb9 100644
--- a/base/javascript/test/inputs/json/misc/bb1ec.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/bb1ec.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/be234.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/be234.json/default/TopLevel.js
index 624c3a1..23847ff 100644
--- a/base/javascript/test/inputs/json/misc/be234.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/be234.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/c0356.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/c0356.json/default/TopLevel.js
index dc4608c..438a6fc 100644
--- a/base/javascript/test/inputs/json/misc/c0356.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/c0356.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/c0a3a.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/c0a3a.json/default/TopLevel.js
index 24a9e52..7ed503d 100644
--- a/base/javascript/test/inputs/json/misc/c0a3a.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/c0a3a.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/c3303.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/c3303.json/default/TopLevel.js
index 6f92b3e..2c286be 100644
--- a/base/javascript/test/inputs/json/misc/c3303.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/c3303.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/c6cfd.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/c6cfd.json/default/TopLevel.js
index 4e3023e..ef2d6e9 100644
--- a/base/javascript/test/inputs/json/misc/c6cfd.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/c6cfd.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/c8c7e.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/c8c7e.json/default/TopLevel.js
index f68a8b3..ae17f28 100644
--- a/base/javascript/test/inputs/json/misc/c8c7e.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/c8c7e.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/cb0cc.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/cb0cc.json/default/TopLevel.js
index 1aafa55..c408c01 100644
--- a/base/javascript/test/inputs/json/misc/cb0cc.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/cb0cc.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/cb81e.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/cb81e.json/default/TopLevel.js
index 3f3317e..150dfff 100644
--- a/base/javascript/test/inputs/json/misc/cb81e.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/cb81e.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/ccd18.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/ccd18.json/default/TopLevel.js
index 24a9e52..7ed503d 100644
--- a/base/javascript/test/inputs/json/misc/ccd18.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/ccd18.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/cd238.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/cd238.json/default/TopLevel.js
index 24a9e52..7ed503d 100644
--- a/base/javascript/test/inputs/json/misc/cd238.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/cd238.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/cd463.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/cd463.json/default/TopLevel.js
index ef1106d..b5bc8f9 100644
--- a/base/javascript/test/inputs/json/misc/cd463.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/cd463.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/cda6c.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/cda6c.json/default/TopLevel.js
index c13bbe6..97e4dd1 100644
--- a/base/javascript/test/inputs/json/misc/cda6c.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/cda6c.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/cf0d8.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/cf0d8.json/default/TopLevel.js
index 37accb2..acd1fb9 100644
--- a/base/javascript/test/inputs/json/misc/cf0d8.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/cf0d8.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/cfbce.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/cfbce.json/default/TopLevel.js
index ef1106d..b5bc8f9 100644
--- a/base/javascript/test/inputs/json/misc/cfbce.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/cfbce.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/d0908.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/d0908.json/default/TopLevel.js
index d4ce8bc..a8a2cb9 100644
--- a/base/javascript/test/inputs/json/misc/d0908.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/d0908.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/d23d5.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/d23d5.json/default/TopLevel.js
index d7064ca..e5a1acd 100644
--- a/base/javascript/test/inputs/json/misc/d23d5.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/d23d5.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/dbfb3.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/dbfb3.json/default/TopLevel.js
index c94cbf6..ab0231f 100644
--- a/base/javascript/test/inputs/json/misc/dbfb3.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/dbfb3.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/dc44f.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/dc44f.json/default/TopLevel.js
index c3e0991..3290a2f 100644
--- a/base/javascript/test/inputs/json/misc/dc44f.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/dc44f.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/dd1ce.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/dd1ce.json/default/TopLevel.js
index c3e0991..3290a2f 100644
--- a/base/javascript/test/inputs/json/misc/dd1ce.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/dd1ce.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/dec3a.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/dec3a.json/default/TopLevel.js
index 2b54298..a1a1ab7 100644
--- a/base/javascript/test/inputs/json/misc/dec3a.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/dec3a.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/df957.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/df957.json/default/TopLevel.js
index 37accb2..acd1fb9 100644
--- a/base/javascript/test/inputs/json/misc/df957.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/df957.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/e0ac7.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/e0ac7.json/default/TopLevel.js
index da5369b..0985cf4 100644
--- a/base/javascript/test/inputs/json/misc/e0ac7.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/e0ac7.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/e2915.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/e2915.json/default/TopLevel.js
index 760ffc1..fd7fefa 100644
--- a/base/javascript/test/inputs/json/misc/e2915.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/e2915.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/e2a58.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/e2a58.json/default/TopLevel.js
index 76b40f8..0859361 100644
--- a/base/javascript/test/inputs/json/misc/e2a58.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/e2a58.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/e324e.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/e324e.json/default/TopLevel.js
index 2605009..fa10af3 100644
--- a/base/javascript/test/inputs/json/misc/e324e.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/e324e.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/e53b5.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/e53b5.json/default/TopLevel.js
index 1c8ea8d..ec39a74 100644
--- a/base/javascript/test/inputs/json/misc/e53b5.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/e53b5.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/e64a0.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/e64a0.json/default/TopLevel.js
index fc0fbf9..988b2e3 100644
--- a/base/javascript/test/inputs/json/misc/e64a0.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/e64a0.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/e8a0b.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/e8a0b.json/default/TopLevel.js
index c70f471..5072650 100644
--- a/base/javascript/test/inputs/json/misc/e8a0b.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/e8a0b.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/e8b04.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/e8b04.json/default/TopLevel.js
index 7185025..cfb13df 100644
--- a/base/javascript/test/inputs/json/misc/e8b04.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/e8b04.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/ed095.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/ed095.json/default/TopLevel.js
index e6581c1..12ecaff 100644
--- a/base/javascript/test/inputs/json/misc/ed095.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/ed095.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/f22f5.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/f22f5.json/default/TopLevel.js
index b984dc6..e7d55b9 100644
--- a/base/javascript/test/inputs/json/misc/f22f5.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/f22f5.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/f3139.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/f3139.json/default/TopLevel.js
index 007f394..b2fbeb7 100644
--- a/base/javascript/test/inputs/json/misc/f3139.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/f3139.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/f3edf.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/f3edf.json/default/TopLevel.js
index c70f471..5072650 100644
--- a/base/javascript/test/inputs/json/misc/f3edf.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/f3edf.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/f466a.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/f466a.json/default/TopLevel.js
index c70f471..5072650 100644
--- a/base/javascript/test/inputs/json/misc/f466a.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/f466a.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/f6a65.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/f6a65.json/default/TopLevel.js
index 3fd2f14..2c60e6b 100644
--- a/base/javascript/test/inputs/json/misc/f6a65.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/f6a65.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/f74d5.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/f74d5.json/default/TopLevel.js
index 2c61964..580e744 100644
--- a/base/javascript/test/inputs/json/misc/f74d5.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/f74d5.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/f82d9.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/f82d9.json/default/TopLevel.js
index 333733e..2df6837 100644
--- a/base/javascript/test/inputs/json/misc/f82d9.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/f82d9.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/f974d.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/f974d.json/default/TopLevel.js
index b0b6eae..22fb238 100644
--- a/base/javascript/test/inputs/json/misc/f974d.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/f974d.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/faff5.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/faff5.json/default/TopLevel.js
index 18f26ad..984006a 100644
--- a/base/javascript/test/inputs/json/misc/faff5.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/faff5.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/fcca3.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/fcca3.json/default/TopLevel.js
index 65de480..e17f74c 100644
--- a/base/javascript/test/inputs/json/misc/fcca3.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/fcca3.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/misc/fd329.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/fd329.json/default/TopLevel.js
index 68bcd09..d23e2d7 100644
--- a/base/javascript/test/inputs/json/misc/fd329.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/fd329.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/priority/blns-object.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/blns-object.json/default/TopLevel.js
index 0f94939..02c4dcf 100644
--- a/base/javascript/test/inputs/json/priority/blns-object.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/blns-object.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/priority/bug2037.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/bug2037.json/default/TopLevel.js
index 8ee286e..4db6c3c 100644
--- a/base/javascript/test/inputs/json/priority/bug2037.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/bug2037.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/priority/bug2521.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/bug2521.json/default/TopLevel.js
index 58f90a5..439166c 100644
--- a/base/javascript/test/inputs/json/priority/bug2521.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/bug2521.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/priority/bug2590.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/bug2590.json/default/TopLevel.js
index c5001be..6c8f4c3 100644
--- a/base/javascript/test/inputs/json/priority/bug2590.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/bug2590.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/priority/bug2663.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/bug2663.json/default/TopLevel.js
index e929142..c6916a2 100644
--- a/base/javascript/test/inputs/json/priority/bug2663.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/bug2663.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/priority/bug2793.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/bug2793.json/default/TopLevel.js
index ba1bfec..4b2fe59 100644
--- a/base/javascript/test/inputs/json/priority/bug2793.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/bug2793.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/priority/bug427.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/bug427.json/default/TopLevel.js
index 0504dc1..0e23edd 100644
--- a/base/javascript/test/inputs/json/priority/bug427.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/bug427.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/priority/bug790.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/bug790.json/default/TopLevel.js
index 00cd0a6..076984a 100644
--- a/base/javascript/test/inputs/json/priority/bug790.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/bug790.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/priority/bug855-short.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/bug855-short.json/default/TopLevel.js
index eb8c544..bd2794c 100644
--- a/base/javascript/test/inputs/json/priority/bug855-short.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/bug855-short.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/priority/bug863.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/bug863.json/default/TopLevel.js
index 053d5dc..cabd493 100644
--- a/base/javascript/test/inputs/json/priority/bug863.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/bug863.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/priority/coin-pairs.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/coin-pairs.json/default/TopLevel.js
index 2181128..c113e96 100644
--- a/base/javascript/test/inputs/json/priority/coin-pairs.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/coin-pairs.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/priority/combinations1.json/converters-top-level--67aa452ed509/TopLevel.js b/head/javascript/test/inputs/json/priority/combinations1.json/converters-top-level--67aa452ed509/TopLevel.js
index e9429c7..c6b3420 100644
--- a/base/javascript/test/inputs/json/priority/combinations1.json/converters-top-level--67aa452ed509/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/combinations1.json/converters-top-level--67aa452ed509/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/priority/combinations1.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/combinations1.json/default/TopLevel.js
index e9429c7..c6b3420 100644
--- a/base/javascript/test/inputs/json/priority/combinations1.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/combinations1.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/priority/combinations1.json/raw-type-any--474b307c39db/TopLevel.js b/head/javascript/test/inputs/json/priority/combinations1.json/raw-type-any--474b307c39db/TopLevel.js
index 331fb59..e220990 100644
--- a/base/javascript/test/inputs/json/priority/combinations1.json/raw-type-any--474b307c39db/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/combinations1.json/raw-type-any--474b307c39db/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/priority/combinations1.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.js b/head/javascript/test/inputs/json/priority/combinations1.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.js
index 7a1151e..957f00f 100644
--- a/base/javascript/test/inputs/json/priority/combinations1.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/combinations1.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/priority/combinations2.json/converters-top-level--67aa452ed509/TopLevel.js b/head/javascript/test/inputs/json/priority/combinations2.json/converters-top-level--67aa452ed509/TopLevel.js
index 908baae..8de8df6 100644
--- a/base/javascript/test/inputs/json/priority/combinations2.json/converters-top-level--67aa452ed509/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/combinations2.json/converters-top-level--67aa452ed509/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/priority/combinations2.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/combinations2.json/default/TopLevel.js
index 908baae..8de8df6 100644
--- a/base/javascript/test/inputs/json/priority/combinations2.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/combinations2.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/priority/combinations2.json/raw-type-any--474b307c39db/TopLevel.js b/head/javascript/test/inputs/json/priority/combinations2.json/raw-type-any--474b307c39db/TopLevel.js
index 24a7b74..2362827 100644
--- a/base/javascript/test/inputs/json/priority/combinations2.json/raw-type-any--474b307c39db/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/combinations2.json/raw-type-any--474b307c39db/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/priority/combinations2.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.js b/head/javascript/test/inputs/json/priority/combinations2.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.js
index 46063b2..fbb3c93 100644
--- a/base/javascript/test/inputs/json/priority/combinations2.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/combinations2.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/priority/combinations3.json/converters-top-level--67aa452ed509/TopLevel.js b/head/javascript/test/inputs/json/priority/combinations3.json/converters-top-level--67aa452ed509/TopLevel.js
index b1ead9e..7bdc1a8 100644
--- a/base/javascript/test/inputs/json/priority/combinations3.json/converters-top-level--67aa452ed509/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/combinations3.json/converters-top-level--67aa452ed509/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/priority/combinations3.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/combinations3.json/default/TopLevel.js
index b1ead9e..7bdc1a8 100644
--- a/base/javascript/test/inputs/json/priority/combinations3.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/combinations3.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/priority/combinations3.json/raw-type-any--474b307c39db/TopLevel.js b/head/javascript/test/inputs/json/priority/combinations3.json/raw-type-any--474b307c39db/TopLevel.js
index 32dc9df..0fc1b77 100644
--- a/base/javascript/test/inputs/json/priority/combinations3.json/raw-type-any--474b307c39db/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/combinations3.json/raw-type-any--474b307c39db/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/priority/combinations3.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.js b/head/javascript/test/inputs/json/priority/combinations3.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.js
index e2b525a..d88ee80 100644
--- a/base/javascript/test/inputs/json/priority/combinations3.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/combinations3.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/priority/combinations4.json/converters-top-level--67aa452ed509/TopLevel.js b/head/javascript/test/inputs/json/priority/combinations4.json/converters-top-level--67aa452ed509/TopLevel.js
index dbc39f0..9098e52 100644
--- a/base/javascript/test/inputs/json/priority/combinations4.json/converters-top-level--67aa452ed509/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/combinations4.json/converters-top-level--67aa452ed509/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/priority/combinations4.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/combinations4.json/default/TopLevel.js
index dbc39f0..9098e52 100644
--- a/base/javascript/test/inputs/json/priority/combinations4.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/combinations4.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/priority/combinations4.json/raw-type-any--474b307c39db/TopLevel.js b/head/javascript/test/inputs/json/priority/combinations4.json/raw-type-any--474b307c39db/TopLevel.js
index 448ce77..84b4eb4 100644
--- a/base/javascript/test/inputs/json/priority/combinations4.json/raw-type-any--474b307c39db/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/combinations4.json/raw-type-any--474b307c39db/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/priority/combinations4.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.js b/head/javascript/test/inputs/json/priority/combinations4.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.js
index 7a96406..60a61ff 100644
--- a/base/javascript/test/inputs/json/priority/combinations4.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/combinations4.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/priority/combined-enum.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/combined-enum.json/default/TopLevel.js
index 65896a1..7db1140 100644
--- a/base/javascript/test/inputs/json/priority/combined-enum.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/combined-enum.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/priority/direct-recursive.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/direct-recursive.json/default/TopLevel.js
index 2bda39b..25bdd46 100644
--- a/base/javascript/test/inputs/json/priority/direct-recursive.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/direct-recursive.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/priority/empty-enum.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/empty-enum.json/default/TopLevel.js
index 6460a9a..2805dbb 100644
--- a/base/javascript/test/inputs/json/priority/empty-enum.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/empty-enum.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/priority/identifiers.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/identifiers.json/default/TopLevel.js
index dd0c1e3..24aedef 100644
--- a/base/javascript/test/inputs/json/priority/identifiers.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/identifiers.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/priority/issue2680-object-array.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/issue2680-object-array.json/default/TopLevel.js
index 1ddb54f..601b357 100644
--- a/base/javascript/test/inputs/json/priority/issue2680-object-array.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/issue2680-object-array.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/priority/issue2680-scalar-array.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/issue2680-scalar-array.json/default/TopLevel.js
index 3fad4a2..9515706 100644
--- a/base/javascript/test/inputs/json/priority/issue2680-scalar-array.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/issue2680-scalar-array.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/priority/keywords.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/keywords.json/default/TopLevel.js
index c9c228e..3210b84 100644
--- a/base/javascript/test/inputs/json/priority/keywords.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/keywords.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/priority/kotlin-enum-class-case-collision.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/kotlin-enum-class-case-collision.json/default/TopLevel.js
index dfa68b4..afd8b5b 100644
--- a/base/javascript/test/inputs/json/priority/kotlin-enum-class-case-collision.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/kotlin-enum-class-case-collision.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/priority/list.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/list.json/default/TopLevel.js
index 3600f23..279b16f 100644
--- a/base/javascript/test/inputs/json/priority/list.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/list.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/priority/name-style.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/name-style.json/default/TopLevel.js
index 0a92d58..1f13def 100644
--- a/base/javascript/test/inputs/json/priority/name-style.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/name-style.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/priority/nbl-stats.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/nbl-stats.json/default/TopLevel.js
index 15b9871..6a9855b 100644
--- a/base/javascript/test/inputs/json/priority/nbl-stats.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/nbl-stats.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/priority/nested-objects.json/converters-all-objects--3a443babd1cb/TopLevel.js b/head/javascript/test/inputs/json/priority/nested-objects.json/converters-all-objects--3a443babd1cb/TopLevel.js
index c839f82..d14ecfb 100644
--- a/base/javascript/test/inputs/json/priority/nested-objects.json/converters-all-objects--3a443babd1cb/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/nested-objects.json/converters-all-objects--3a443babd1cb/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/priority/nested-objects.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/nested-objects.json/default/TopLevel.js
index c839f82..d14ecfb 100644
--- a/base/javascript/test/inputs/json/priority/nested-objects.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/nested-objects.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/priority/no-classes.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/no-classes.json/default/TopLevel.js
index 09219fd..38e3295 100644
--- a/base/javascript/test/inputs/json/priority/no-classes.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/no-classes.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/priority/nst-test-suite.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/nst-test-suite.json/default/TopLevel.js
index 0399dd2..c52af80 100644
--- a/base/javascript/test/inputs/json/priority/nst-test-suite.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/nst-test-suite.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/priority/number-map.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/number-map.json/default/TopLevel.js
index 309cc42..f67e389 100644
--- a/base/javascript/test/inputs/json/priority/number-map.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/number-map.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/priority/omit-empty.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/omit-empty.json/default/TopLevel.js
index 8737333..43380a8 100644
--- a/base/javascript/test/inputs/json/priority/omit-empty.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/omit-empty.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/priority/optional-union.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/optional-union.json/default/TopLevel.js
index c0bf086..2287ca4 100644
--- a/base/javascript/test/inputs/json/priority/optional-union.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/optional-union.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/priority/php-mixed-union.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/php-mixed-union.json/default/TopLevel.js
index 5a52700..555bab5 100644
--- a/base/javascript/test/inputs/json/priority/php-mixed-union.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/php-mixed-union.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/priority/php-validation.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/php-validation.json/default/TopLevel.js
index 1bfe5b8..6cdb09a 100644
--- a/base/javascript/test/inputs/json/priority/php-validation.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/php-validation.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/priority/recursive.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/recursive.json/default/TopLevel.js
index 75f8c73..ebdf80c 100644
--- a/base/javascript/test/inputs/json/priority/recursive.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/recursive.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/priority/simple-identifiers.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/simple-identifiers.json/default/TopLevel.js
index b86fa94..1ecd528 100644
--- a/base/javascript/test/inputs/json/priority/simple-identifiers.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/simple-identifiers.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/priority/union-constructor-clash.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/union-constructor-clash.json/default/TopLevel.js
index 1d9e8fb..f541287 100644
--- a/base/javascript/test/inputs/json/priority/union-constructor-clash.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/union-constructor-clash.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/priority/unions.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/unions.json/default/TopLevel.js
index 20de1f2..5686cad 100644
--- a/base/javascript/test/inputs/json/priority/unions.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/unions.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/priority/url.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/url.json/default/TopLevel.js
index 119f008..eddd54c 100644
--- a/base/javascript/test/inputs/json/priority/url.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/url.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/priority/uuids.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/uuids.json/default/TopLevel.js
index 82d79ba..a8baed6 100644
--- a/base/javascript/test/inputs/json/priority/uuids.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/uuids.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/samples/bitcoin-block.json/default/TopLevel.js b/head/javascript/test/inputs/json/samples/bitcoin-block.json/default/TopLevel.js
index b0b6eae..22fb238 100644
--- a/base/javascript/test/inputs/json/samples/bitcoin-block.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/samples/bitcoin-block.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/samples/copy-with-property.json/default/TopLevel.js b/head/javascript/test/inputs/json/samples/copy-with-property.json/default/TopLevel.js
index e5f915b..744997a 100644
--- a/base/javascript/test/inputs/json/samples/copy-with-property.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/samples/copy-with-property.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/samples/getting-started.json/default/TopLevel.js b/head/javascript/test/inputs/json/samples/getting-started.json/default/TopLevel.js
index 4ac833e..6286f9a 100644
--- a/base/javascript/test/inputs/json/samples/getting-started.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/samples/getting-started.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/samples/github-events.json/default/TopLevel.js b/head/javascript/test/inputs/json/samples/github-events.json/default/TopLevel.js
index 3d0fbee..8cdad8e 100644
--- a/base/javascript/test/inputs/json/samples/github-events.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/samples/github-events.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/samples/kitchen-sink.json/default/TopLevel.js b/head/javascript/test/inputs/json/samples/kitchen-sink.json/default/TopLevel.js
index 31023ec..482996b 100644
--- a/base/javascript/test/inputs/json/samples/kitchen-sink.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/samples/kitchen-sink.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/samples/null-safe.json/default/TopLevel.js b/head/javascript/test/inputs/json/samples/null-safe.json/default/TopLevel.js
index 9078a49..561f080 100644
--- a/base/javascript/test/inputs/json/samples/null-safe.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/samples/null-safe.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/samples/objc-control-characters.json/default/TopLevel.js b/head/javascript/test/inputs/json/samples/objc-control-characters.json/default/TopLevel.js
index 00c156c..a887bec 100644
--- a/base/javascript/test/inputs/json/samples/objc-control-characters.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/samples/objc-control-characters.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/samples/pokedex.json/default/TopLevel.js b/head/javascript/test/inputs/json/samples/pokedex.json/default/TopLevel.js
index 3093470..51d9840 100644
--- a/base/javascript/test/inputs/json/samples/pokedex.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/samples/pokedex.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/samples/reddit.json/default/TopLevel.js b/head/javascript/test/inputs/json/samples/reddit.json/default/TopLevel.js
index 005cf98..1ebb38a 100644
--- a/base/javascript/test/inputs/json/samples/reddit.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/samples/reddit.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/samples/simple-object.json/default/TopLevel.js b/head/javascript/test/inputs/json/samples/simple-object.json/default/TopLevel.js
index f1316d9..6be8558 100644
--- a/base/javascript/test/inputs/json/samples/simple-object.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/samples/simple-object.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/samples/spotify-album.json/default/TopLevel.js b/head/javascript/test/inputs/json/samples/spotify-album.json/default/TopLevel.js
index 3927c9b..86817b6 100644
--- a/base/javascript/test/inputs/json/samples/spotify-album.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/samples/spotify-album.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/samples/us-avg-temperatures.json/default/TopLevel.js b/head/javascript/test/inputs/json/samples/us-avg-temperatures.json/default/TopLevel.js
index 68bcd09..d23e2d7 100644
--- a/base/javascript/test/inputs/json/samples/us-avg-temperatures.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/samples/us-avg-temperatures.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript/test/inputs/json/samples/us-senators.json/default/TopLevel.js b/head/javascript/test/inputs/json/samples/us-senators.json/default/TopLevel.js
index e0ac500..dc3a543 100644
--- a/base/javascript/test/inputs/json/samples/us-senators.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/samples/us-senators.json/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/javascript-prop-types/test/inputs/json/misc/016af.json/default/toplevel.js b/head/javascript-prop-types/test/inputs/json/misc/016af.json/default/toplevel.js
index b5963bc..631f2e0 100644
--- a/base/javascript-prop-types/test/inputs/json/misc/016af.json/default/toplevel.js
+++ b/head/javascript-prop-types/test/inputs/json/misc/016af.json/default/toplevel.js
@@ -16,7 +16,7 @@ const Integer = (props, name) => props[name] == null || Number.isInteger(props[n
 let _TopLevel;
 let _TotalPopulation;
 _TotalPopulation = PropTypes.shape({
-    "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "population": PropTypes.oneOfType([Integer]).isRequired,
 });
 _TopLevel = PropTypes.shape({
diff --git a/base/javascript-prop-types/test/inputs/json/misc/033b1.json/default/toplevel.js b/head/javascript-prop-types/test/inputs/json/misc/033b1.json/default/toplevel.js
index a431696..629dd81 100644
--- a/base/javascript-prop-types/test/inputs/json/misc/033b1.json/default/toplevel.js
+++ b/head/javascript-prop-types/test/inputs/json/misc/033b1.json/default/toplevel.js
@@ -15,7 +15,7 @@ import PropTypes from "prop-types";
 let _TopLevel;
 _TopLevel = PropTypes.shape({
     "base": PropTypes.oneOfType([PropTypes.string]).isRequired,
-    "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "rates": PropTypes.oneOfType([PropTypes.objectOf(PropTypes.number)]).isRequired,
 });
 
diff --git a/base/javascript-prop-types/test/inputs/json/misc/0a358.json/default/toplevel.js b/head/javascript-prop-types/test/inputs/json/misc/0a358.json/default/toplevel.js
index 953cc0b..7d92982 100644
--- a/base/javascript-prop-types/test/inputs/json/misc/0a358.json/default/toplevel.js
+++ b/head/javascript-prop-types/test/inputs/json/misc/0a358.json/default/toplevel.js
@@ -20,10 +20,10 @@ _Facets = PropTypes.shape({
 });
 _Result = PropTypes.shape({
     "code": PropTypes.oneOfType([PropTypes.string]).isRequired,
-    "created_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "created_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "id": PropTypes.oneOfType([Integer]).isRequired,
     "name": PropTypes.oneOfType([PropTypes.string]).isRequired,
-    "updated_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "updated_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "uri": PropTypes.oneOfType([PropTypes.string]).isRequired,
 });
 _TopLevel = PropTypes.shape({
diff --git a/base/javascript-prop-types/test/inputs/json/misc/0a91a.json/default/toplevel.js b/head/javascript-prop-types/test/inputs/json/misc/0a91a.json/default/toplevel.js
index 5d8df8c..cae6bcd 100644
--- a/base/javascript-prop-types/test/inputs/json/misc/0a91a.json/default/toplevel.js
+++ b/head/javascript-prop-types/test/inputs/json/misc/0a91a.json/default/toplevel.js
@@ -89,7 +89,7 @@ _BaseRepo = PropTypes.shape({
     "compare_url": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "contents_url": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "contributors_url": PropTypes.oneOfType([PropTypes.string]).isRequired,
-    "created_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "created_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "default_branch": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "deployments_url": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "description": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOf([null])])(props, name, ...args),
@@ -130,7 +130,7 @@ _BaseRepo = PropTypes.shape({
     "owner": _MergedBy,
     "private": PropTypes.oneOfType([PropTypes.bool]).isRequired,
     "pulls_url": PropTypes.oneOfType([PropTypes.string]).isRequired,
-    "pushed_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "pushed_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "releases_url": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "size": PropTypes.oneOfType([Integer]).isRequired,
     "ssh_url": PropTypes.oneOfType([PropTypes.string]).isRequired,
@@ -143,7 +143,7 @@ _BaseRepo = PropTypes.shape({
     "tags_url": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "teams_url": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "trees_url": PropTypes.oneOfType([PropTypes.string]).isRequired,
-    "updated_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "updated_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "url": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "watchers": PropTypes.oneOfType([Integer]).isRequired,
     "watchers_count": PropTypes.oneOfType([Integer]).isRequired,
@@ -163,12 +163,12 @@ _PullRequest = PropTypes.shape({
     "base": _Base,
     "body": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "changed_files": PropTypes.oneOfType([Integer]).isRequired,
-    "closed_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "closed_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "comments": PropTypes.oneOfType([Integer]).isRequired,
     "comments_url": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "commits": PropTypes.oneOfType([Integer]).isRequired,
     "commits_url": PropTypes.oneOfType([PropTypes.string]).isRequired,
-    "created_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "created_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "deletions": PropTypes.oneOfType([Integer]).isRequired,
     "diff_url": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "head": _Base,
@@ -181,7 +181,7 @@ _PullRequest = PropTypes.shape({
     "mergeable": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOf([null])])(props, name, ...args),
     "mergeable_state": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "merged": PropTypes.oneOfType([PropTypes.bool]).isRequired,
-    "merged_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "merged_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "merged_by": _MergedBy,
     "milestone": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOf([null])])(props, name, ...args),
     "number": PropTypes.oneOfType([Integer]).isRequired,
@@ -194,7 +194,7 @@ _PullRequest = PropTypes.shape({
     "state": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "statuses_url": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "title": PropTypes.oneOfType([PropTypes.string]).isRequired,
-    "updated_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "updated_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "url": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "user": _MergedBy,
 });
@@ -221,7 +221,7 @@ _TopLevelRepo = PropTypes.shape({
 });
 _TopLevel = PropTypes.shape({
     "actor": _Actor,
-    "created_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "created_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "id": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "org": PropTypes.oneOfType([_Actor, PropTypes.oneOf([null])]),
     "payload": _Payload,
diff --git a/base/javascript-prop-types/test/inputs/json/misc/0e0c2.json/default/toplevel.js b/head/javascript-prop-types/test/inputs/json/misc/0e0c2.json/default/toplevel.js
index 124a0ae..699c86d 100644
--- a/base/javascript-prop-types/test/inputs/json/misc/0e0c2.json/default/toplevel.js
+++ b/head/javascript-prop-types/test/inputs/json/misc/0e0c2.json/default/toplevel.js
@@ -71,7 +71,7 @@ _Result = PropTypes.shape({
     "id": PropTypes.oneOfType([Integer]).isRequired,
     "images": PropTypes.oneOfType([PropTypes.arrayOf(_Image)]).isRequired,
     "language": _ResultLanguage,
-    "release_date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "release_date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "stars": PropTypes.oneOfType([Integer]).isRequired,
     "tags": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.any), PropTypes.oneOf([null])])])(props, name, ...args),
     "title": PropTypes.oneOfType([PropTypes.string]).isRequired,
diff --git a/base/javascript-prop-types/test/inputs/json/misc/167d6.json/default/toplevel.js b/head/javascript-prop-types/test/inputs/json/misc/167d6.json/default/toplevel.js
index a431696..629dd81 100644
--- a/base/javascript-prop-types/test/inputs/json/misc/167d6.json/default/toplevel.js
+++ b/head/javascript-prop-types/test/inputs/json/misc/167d6.json/default/toplevel.js
@@ -15,7 +15,7 @@ import PropTypes from "prop-types";
 let _TopLevel;
 _TopLevel = PropTypes.shape({
     "base": PropTypes.oneOfType([PropTypes.string]).isRequired,
-    "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "rates": PropTypes.oneOfType([PropTypes.objectOf(PropTypes.number)]).isRequired,
 });
 
diff --git a/base/javascript-prop-types/test/inputs/json/misc/16bc5.json/default/toplevel.js b/head/javascript-prop-types/test/inputs/json/misc/16bc5.json/default/toplevel.js
index d6b9e6a..c3afab2 100644
--- a/base/javascript-prop-types/test/inputs/json/misc/16bc5.json/default/toplevel.js
+++ b/head/javascript-prop-types/test/inputs/json/misc/16bc5.json/default/toplevel.js
@@ -108,7 +108,7 @@ _Results = PropTypes.shape({
 });
 _Query = PropTypes.shape({
     "count": PropTypes.oneOfType([Integer]).isRequired,
-    "created": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "created": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "lang": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "results": _Results,
 });
diff --git a/base/javascript-prop-types/test/inputs/json/misc/1b28c.json/default/toplevel.js b/head/javascript-prop-types/test/inputs/json/misc/1b28c.json/default/toplevel.js
index b5963bc..631f2e0 100644
--- a/base/javascript-prop-types/test/inputs/json/misc/1b28c.json/default/toplevel.js
+++ b/head/javascript-prop-types/test/inputs/json/misc/1b28c.json/default/toplevel.js
@@ -16,7 +16,7 @@ const Integer = (props, name) => props[name] == null || Number.isInteger(props[n
 let _TopLevel;
 let _TotalPopulation;
 _TotalPopulation = PropTypes.shape({
-    "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "population": PropTypes.oneOfType([Integer]).isRequired,
 });
 _TopLevel = PropTypes.shape({
diff --git a/base/javascript-prop-types/test/inputs/json/misc/1b409.json/default/toplevel.js b/head/javascript-prop-types/test/inputs/json/misc/1b409.json/default/toplevel.js
index cf322b8..364c4bd 100644
--- a/base/javascript-prop-types/test/inputs/json/misc/1b409.json/default/toplevel.js
+++ b/head/javascript-prop-types/test/inputs/json/misc/1b409.json/default/toplevel.js
@@ -39,7 +39,7 @@ _Extra = PropTypes.shape({
 });
 _Person = PropTypes.shape({
     "bioguideid": PropTypes.oneOfType([PropTypes.string]).isRequired,
-    "birthday": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "birthday": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "cspanid": PropTypes.oneOfType([Integer]).isRequired,
     "firstname": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "gender": _Gender,
@@ -63,7 +63,7 @@ _Object = PropTypes.shape({
     "current": PropTypes.oneOfType([PropTypes.bool]).isRequired,
     "description": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "district": PropTypes.oneOfType([Integer]).isRequired,
-    "enddate": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "enddate": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "extra": _Extra,
     "id": PropTypes.oneOfType([Integer]).isRequired,
     "leadership_title": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOfType([PropTypes.oneOf([null]), PropTypes.string])])(props, name, ...args),
@@ -74,7 +74,7 @@ _Object = PropTypes.shape({
     "role_type_label": _RoleTypeLabel,
     "senator_class": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOf([null])])(props, name, ...args),
     "senator_rank": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOf([null])])(props, name, ...args),
-    "startdate": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "startdate": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "state": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "title": _Title,
     "title_long": _RoleTypeLabel,
diff --git a/base/javascript-prop-types/test/inputs/json/misc/262f0.json/default/toplevel.js b/head/javascript-prop-types/test/inputs/json/misc/262f0.json/default/toplevel.js
index cf8909f..31db236 100644
--- a/base/javascript-prop-types/test/inputs/json/misc/262f0.json/default/toplevel.js
+++ b/head/javascript-prop-types/test/inputs/json/misc/262f0.json/default/toplevel.js
@@ -109,7 +109,7 @@ _Results = PropTypes.shape({
 });
 _Query = PropTypes.shape({
     "count": PropTypes.oneOfType([Integer]).isRequired,
-    "created": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "created": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "lang": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "results": _Results,
 });
diff --git a/base/javascript-prop-types/test/inputs/json/misc/2d4e2.json/default/toplevel.js b/head/javascript-prop-types/test/inputs/json/misc/2d4e2.json/default/toplevel.js
index d972451..109435c 100644
--- a/base/javascript-prop-types/test/inputs/json/misc/2d4e2.json/default/toplevel.js
+++ b/head/javascript-prop-types/test/inputs/json/misc/2d4e2.json/default/toplevel.js
@@ -43,7 +43,7 @@ _Extra = PropTypes.shape({
 });
 _Person = PropTypes.shape({
     "bioguideid": PropTypes.oneOfType([PropTypes.string]).isRequired,
-    "birthday": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "birthday": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "cspanid": PropTypes.oneOfType([Integer]).isRequired,
     "firstname": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "gender": _Gender,
@@ -67,7 +67,7 @@ _Object = PropTypes.shape({
     "current": PropTypes.oneOfType([PropTypes.bool]).isRequired,
     "description": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "district": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOf([null])])(props, name, ...args),
-    "enddate": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "enddate": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "extra": _Extra,
     "id": PropTypes.oneOfType([Integer]).isRequired,
     "leadership_title": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOfType([PropTypes.oneOf([null]), PropTypes.string])])(props, name, ...args),
@@ -80,7 +80,7 @@ _Object = PropTypes.shape({
     "senator_class_label": _SenatorClassLabel,
     "senator_rank": _SenatorRank,
     "senator_rank_label": _SenatorRankLabel,
-    "startdate": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "startdate": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "state": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "title": _Title,
     "title_long": _RoleTypeLabel,
diff --git a/base/javascript-prop-types/test/inputs/json/misc/31189.json/default/toplevel.js b/head/javascript-prop-types/test/inputs/json/misc/31189.json/default/toplevel.js
index 8519b9f..163e934 100644
--- a/base/javascript-prop-types/test/inputs/json/misc/31189.json/default/toplevel.js
+++ b/head/javascript-prop-types/test/inputs/json/misc/31189.json/default/toplevel.js
@@ -26,7 +26,7 @@ _Rates = PropTypes.shape({
     "super_reduced": PropTypes.oneOfType([PropTypes.number, PropTypes.oneOf([null])]),
 });
 _Period = PropTypes.shape({
-    "effective_from": PropTypes.oneOfType([PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time"), _EffectiveFromEnum])]).isRequired,
+    "effective_from": PropTypes.oneOfType([PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time"), _EffectiveFromEnum])]).isRequired,
     "rates": _Rates,
 });
 _Rate = PropTypes.shape({
diff --git a/base/javascript-prop-types/test/inputs/json/misc/32d5c.json/default/toplevel.js b/head/javascript-prop-types/test/inputs/json/misc/32d5c.json/default/toplevel.js
index ac7b946..1248056 100644
--- a/base/javascript-prop-types/test/inputs/json/misc/32d5c.json/default/toplevel.js
+++ b/head/javascript-prop-types/test/inputs/json/misc/32d5c.json/default/toplevel.js
@@ -15,7 +15,7 @@ const Integer = (props, name) => props[name] == null || Number.isInteger(props[n
 
 let _TopLevel;
 _TopLevel = PropTypes.shape({
-    "BirthDate": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time"), PropTypes.oneOf([null])])])(props, name, ...args),
+    "BirthDate": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time"), PropTypes.oneOf([null])])])(props, name, ...args),
     "BirthDateIsProtected": PropTypes.oneOfType([PropTypes.bool]).isRequired,
     "GenderTypeID": PropTypes.oneOfType([Integer]).isRequired,
     "Notes": PropTypes.oneOfType([PropTypes.string]).isRequired,
diff --git a/base/javascript-prop-types/test/inputs/json/misc/337ed.json/default/toplevel.js b/head/javascript-prop-types/test/inputs/json/misc/337ed.json/default/toplevel.js
index 61afa5f..1e41d2e 100644
--- a/base/javascript-prop-types/test/inputs/json/misc/337ed.json/default/toplevel.js
+++ b/head/javascript-prop-types/test/inputs/json/misc/337ed.json/default/toplevel.js
@@ -24,23 +24,23 @@ _Facets = PropTypes.shape({
 });
 _CustomIncome = PropTypes.shape({
     "amount": PropTypes.oneOfType([Integer]).isRequired,
-    "created_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "created_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "id": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "name": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "status": _Status,
     "type": _CustomIncomeType,
-    "updated_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "updated_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "uri": PropTypes.oneOfType([PropTypes.string]).isRequired,
 });
 _Result = PropTypes.shape({
     "cost_absolute": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOfType([Integer, PropTypes.oneOf([null])])])(props, name, ...args),
     "cost_max": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOfType([Integer, PropTypes.oneOf([null])])])(props, name, ...args),
     "cost_min": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOfType([Integer, PropTypes.oneOf([null])])])(props, name, ...args),
-    "created_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "created_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "customIncomes": PropTypes.oneOfType([PropTypes.arrayOf(_CustomIncome)]).isRequired,
     "direct_rep_costs_max": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOf([null])])(props, name, ...args),
     "direct_rep_costs_min": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOf([null])])(props, name, ...args),
-    "end_date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "end_date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "eur_sources_grants": PropTypes.oneOfType([Integer]).isRequired,
     "eur_sources_grants_src": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOfType([PropTypes.oneOf([null]), PropTypes.string])])(props, name, ...args),
     "eur_sources_procurement": PropTypes.oneOfType([Integer]).isRequired,
@@ -56,14 +56,14 @@ _Result = PropTypes.shape({
     "public_financing_national": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOfType([Integer, PropTypes.oneOf([null])])])(props, name, ...args),
     "public_financing_total": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOfType([Integer, PropTypes.oneOf([null])])])(props, name, ...args),
     "representative": PropTypes.oneOfType([PropTypes.string]).isRequired,
-    "start_date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "start_date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "status": _Status,
     "total_budget": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOfType([Integer, PropTypes.oneOf([null])])])(props, name, ...args),
     "turnover_absolute": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOfType([Integer, PropTypes.oneOf([null])])])(props, name, ...args),
     "turnover_max": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOfType([Integer, PropTypes.oneOf([null])])])(props, name, ...args),
     "turnover_min": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOfType([Integer, PropTypes.oneOf([null])])])(props, name, ...args),
     "type": _ResultType,
-    "updated_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "updated_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "uri": PropTypes.oneOfType([PropTypes.string]).isRequired,
 });
 _TopLevel = PropTypes.shape({
diff --git a/base/javascript-prop-types/test/inputs/json/misc/33d2e.json/default/toplevel.js b/head/javascript-prop-types/test/inputs/json/misc/33d2e.json/default/toplevel.js
index 2c811a9..0286b2d 100644
--- a/base/javascript-prop-types/test/inputs/json/misc/33d2e.json/default/toplevel.js
+++ b/head/javascript-prop-types/test/inputs/json/misc/33d2e.json/default/toplevel.js
@@ -33,11 +33,11 @@ _Prize = PropTypes.shape({
     "year": PropTypes.oneOfType([PropTypes.oneOf([null]), PropTypes.string]),
 });
 _Laureate = PropTypes.shape({
-    "born": PropTypes.oneOfType([PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time"), _BornEnum])]).isRequired,
+    "born": PropTypes.oneOfType([PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time"), _BornEnum])]).isRequired,
     "bornCity": PropTypes.oneOfType([PropTypes.oneOf([null]), PropTypes.string]),
     "bornCountry": PropTypes.oneOfType([PropTypes.oneOf([null]), PropTypes.string]),
     "bornCountryCode": PropTypes.oneOfType([PropTypes.oneOf([null]), PropTypes.string]),
-    "died": PropTypes.oneOfType([PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time"), _BornEnum])]).isRequired,
+    "died": PropTypes.oneOfType([PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time"), _BornEnum])]).isRequired,
     "diedCity": PropTypes.oneOfType([PropTypes.oneOf([null]), PropTypes.string]),
     "diedCountry": PropTypes.oneOfType([PropTypes.oneOf([null]), PropTypes.string]),
     "diedCountryCode": PropTypes.oneOfType([PropTypes.oneOf([null]), PropTypes.string]),
diff --git a/base/javascript-prop-types/test/inputs/json/misc/3659d.json/default/toplevel.js b/head/javascript-prop-types/test/inputs/json/misc/3659d.json/default/toplevel.js
index b5963bc..631f2e0 100644
--- a/base/javascript-prop-types/test/inputs/json/misc/3659d.json/default/toplevel.js
+++ b/head/javascript-prop-types/test/inputs/json/misc/3659d.json/default/toplevel.js
@@ -16,7 +16,7 @@ const Integer = (props, name) => props[name] == null || Number.isInteger(props[n
 let _TopLevel;
 let _TotalPopulation;
 _TotalPopulation = PropTypes.shape({
-    "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "population": PropTypes.oneOfType([Integer]).isRequired,
 });
 _TopLevel = PropTypes.shape({
diff --git a/base/javascript-prop-types/test/inputs/json/misc/3f1ce.json/default/toplevel.js b/head/javascript-prop-types/test/inputs/json/misc/3f1ce.json/default/toplevel.js
index 7726932..f3f8ea3 100644
--- a/base/javascript-prop-types/test/inputs/json/misc/3f1ce.json/default/toplevel.js
+++ b/head/javascript-prop-types/test/inputs/json/misc/3f1ce.json/default/toplevel.js
@@ -109,7 +109,7 @@ _Results = PropTypes.shape({
 });
 _Query = PropTypes.shape({
     "count": PropTypes.oneOfType([Integer]).isRequired,
-    "created": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "created": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "lang": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "results": _Results,
 });
diff --git a/base/javascript-prop-types/test/inputs/json/misc/43eaf.json/default/toplevel.js b/head/javascript-prop-types/test/inputs/json/misc/43eaf.json/default/toplevel.js
index a431696..629dd81 100644
--- a/base/javascript-prop-types/test/inputs/json/misc/43eaf.json/default/toplevel.js
+++ b/head/javascript-prop-types/test/inputs/json/misc/43eaf.json/default/toplevel.js
@@ -15,7 +15,7 @@ import PropTypes from "prop-types";
 let _TopLevel;
 _TopLevel = PropTypes.shape({
     "base": PropTypes.oneOfType([PropTypes.string]).isRequired,
-    "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "rates": PropTypes.oneOfType([PropTypes.objectOf(PropTypes.number)]).isRequired,
 });
 
diff --git a/base/javascript-prop-types/test/inputs/json/misc/4961a.json/default/toplevel.js b/head/javascript-prop-types/test/inputs/json/misc/4961a.json/default/toplevel.js
index b5963bc..631f2e0 100644
--- a/base/javascript-prop-types/test/inputs/json/misc/4961a.json/default/toplevel.js
+++ b/head/javascript-prop-types/test/inputs/json/misc/4961a.json/default/toplevel.js
@@ -16,7 +16,7 @@ const Integer = (props, name) => props[name] == null || Number.isInteger(props[n
 let _TopLevel;
 let _TotalPopulation;
 _TotalPopulation = PropTypes.shape({
-    "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "population": PropTypes.oneOfType([Integer]).isRequired,
 });
 _TopLevel = PropTypes.shape({
diff --git a/base/javascript-prop-types/test/inputs/json/misc/4a0d7.json/default/toplevel.js b/head/javascript-prop-types/test/inputs/json/misc/4a0d7.json/default/toplevel.js
index b5963bc..631f2e0 100644
--- a/base/javascript-prop-types/test/inputs/json/misc/4a0d7.json/default/toplevel.js
+++ b/head/javascript-prop-types/test/inputs/json/misc/4a0d7.json/default/toplevel.js
@@ -16,7 +16,7 @@ const Integer = (props, name) => props[name] == null || Number.isInteger(props[n
 let _TopLevel;
 let _TotalPopulation;
 _TotalPopulation = PropTypes.shape({
-    "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "population": PropTypes.oneOfType([Integer]).isRequired,
 });
 _TopLevel = PropTypes.shape({
diff --git a/base/javascript-prop-types/test/inputs/json/misc/4c547.json/default/toplevel.js b/head/javascript-prop-types/test/inputs/json/misc/4c547.json/default/toplevel.js
index d6b9e6a..c3afab2 100644
--- a/base/javascript-prop-types/test/inputs/json/misc/4c547.json/default/toplevel.js
+++ b/head/javascript-prop-types/test/inputs/json/misc/4c547.json/default/toplevel.js
@@ -108,7 +108,7 @@ _Results = PropTypes.shape({
 });
 _Query = PropTypes.shape({
     "count": PropTypes.oneOfType([Integer]).isRequired,
-    "created": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "created": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "lang": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "results": _Results,
 });
diff --git a/base/javascript-prop-types/test/inputs/json/misc/4e336.json/default/toplevel.js b/head/javascript-prop-types/test/inputs/json/misc/4e336.json/default/toplevel.js
index b5963bc..631f2e0 100644
--- a/base/javascript-prop-types/test/inputs/json/misc/4e336.json/default/toplevel.js
+++ b/head/javascript-prop-types/test/inputs/json/misc/4e336.json/default/toplevel.js
@@ -16,7 +16,7 @@ const Integer = (props, name) => props[name] == null || Number.isInteger(props[n
 let _TopLevel;
 let _TotalPopulation;
 _TotalPopulation = PropTypes.shape({
-    "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "population": PropTypes.oneOfType([Integer]).isRequired,
 });
 _TopLevel = PropTypes.shape({
diff --git a/base/javascript-prop-types/test/inputs/json/misc/54d32.json/default/toplevel.js b/head/javascript-prop-types/test/inputs/json/misc/54d32.json/default/toplevel.js
index 0cc0aae..faeb598 100644
--- a/base/javascript-prop-types/test/inputs/json/misc/54d32.json/default/toplevel.js
+++ b/head/javascript-prop-types/test/inputs/json/misc/54d32.json/default/toplevel.js
@@ -20,12 +20,12 @@ const _Status = PropTypes.oneOf(['inactive', 'active']);
 _Facets = PropTypes.shape({
 });
 _Result = PropTypes.shape({
-    "created_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "created_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "id": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "person_id": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "representative_id": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "status": _Status,
-    "updated_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "updated_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
 });
 _TopLevel = PropTypes.shape({
     "count": PropTypes.oneOfType([Integer]).isRequired,
diff --git a/base/javascript-prop-types/test/inputs/json/misc/5eae5.json/default/toplevel.js b/head/javascript-prop-types/test/inputs/json/misc/5eae5.json/default/toplevel.js
index 81f18fe..9c4bc53 100644
--- a/base/javascript-prop-types/test/inputs/json/misc/5eae5.json/default/toplevel.js
+++ b/head/javascript-prop-types/test/inputs/json/misc/5eae5.json/default/toplevel.js
@@ -15,7 +15,7 @@ const Integer = (props, name) => props[name] == null || Number.isInteger(props[n
 
 let _TopLevel;
 _TopLevel = PropTypes.shape({
-    "Date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "Date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "ID": PropTypes.oneOfType([Integer]).isRequired,
     "Sponsor": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "Title": PropTypes.oneOfType([PropTypes.string]).isRequired,
diff --git a/base/javascript-prop-types/test/inputs/json/misc/5f3a1.json/default/toplevel.js b/head/javascript-prop-types/test/inputs/json/misc/5f3a1.json/default/toplevel.js
index a431696..629dd81 100644
--- a/base/javascript-prop-types/test/inputs/json/misc/5f3a1.json/default/toplevel.js
+++ b/head/javascript-prop-types/test/inputs/json/misc/5f3a1.json/default/toplevel.js
@@ -15,7 +15,7 @@ import PropTypes from "prop-types";
 let _TopLevel;
 _TopLevel = PropTypes.shape({
     "base": PropTypes.oneOfType([PropTypes.string]).isRequired,
-    "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "rates": PropTypes.oneOfType([PropTypes.objectOf(PropTypes.number)]).isRequired,
 });
 
diff --git a/base/javascript-prop-types/test/inputs/json/misc/6260a.json/default/toplevel.js b/head/javascript-prop-types/test/inputs/json/misc/6260a.json/default/toplevel.js
index a431696..629dd81 100644
--- a/base/javascript-prop-types/test/inputs/json/misc/6260a.json/default/toplevel.js
+++ b/head/javascript-prop-types/test/inputs/json/misc/6260a.json/default/toplevel.js
@@ -15,7 +15,7 @@ import PropTypes from "prop-types";
 let _TopLevel;
 _TopLevel = PropTypes.shape({
     "base": PropTypes.oneOfType([PropTypes.string]).isRequired,
-    "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "rates": PropTypes.oneOfType([PropTypes.objectOf(PropTypes.number)]).isRequired,
 });
 
diff --git a/base/javascript-prop-types/test/inputs/json/misc/65dec.json/default/toplevel.js b/head/javascript-prop-types/test/inputs/json/misc/65dec.json/default/toplevel.js
index 121f169..1ae58ce 100644
--- a/base/javascript-prop-types/test/inputs/json/misc/65dec.json/default/toplevel.js
+++ b/head/javascript-prop-types/test/inputs/json/misc/65dec.json/default/toplevel.js
@@ -28,7 +28,7 @@ _LegalityElement = PropTypes.shape({
     "legality": _LegalityEnum,
 });
 _Ruling = PropTypes.shape({
-    "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "text": PropTypes.oneOfType([PropTypes.string]).isRequired,
 });
 _Card = PropTypes.shape({
@@ -71,7 +71,7 @@ _TopLevel = PropTypes.shape({
     "mkm_id": PropTypes.oneOfType([Integer]).isRequired,
     "mkm_name": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "name": PropTypes.oneOfType([PropTypes.string]).isRequired,
-    "releaseDate": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "releaseDate": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "type": PropTypes.oneOfType([PropTypes.string]).isRequired,
 });
 
diff --git a/base/javascript-prop-types/test/inputs/json/misc/6dec6.json/default/toplevel.js b/head/javascript-prop-types/test/inputs/json/misc/6dec6.json/default/toplevel.js
index 9f9892d..dfc3dda 100644
--- a/base/javascript-prop-types/test/inputs/json/misc/6dec6.json/default/toplevel.js
+++ b/head/javascript-prop-types/test/inputs/json/misc/6dec6.json/default/toplevel.js
@@ -109,7 +109,7 @@ _Results = PropTypes.shape({
 });
 _Query = PropTypes.shape({
     "count": PropTypes.oneOfType([Integer]).isRequired,
-    "created": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "created": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "lang": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "results": _Results,
 });
diff --git a/base/javascript-prop-types/test/inputs/json/misc/70c77.json/default/toplevel.js b/head/javascript-prop-types/test/inputs/json/misc/70c77.json/default/toplevel.js
index a431696..629dd81 100644
--- a/base/javascript-prop-types/test/inputs/json/misc/70c77.json/default/toplevel.js
+++ b/head/javascript-prop-types/test/inputs/json/misc/70c77.json/default/toplevel.js
@@ -15,7 +15,7 @@ import PropTypes from "prop-types";
 let _TopLevel;
 _TopLevel = PropTypes.shape({
     "base": PropTypes.oneOfType([PropTypes.string]).isRequired,
-    "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "rates": PropTypes.oneOfType([PropTypes.objectOf(PropTypes.number)]).isRequired,
 });
 
diff --git a/base/javascript-prop-types/test/inputs/json/misc/734ad.json/default/toplevel.js b/head/javascript-prop-types/test/inputs/json/misc/734ad.json/default/toplevel.js
index 638f83c..5e66c6e 100644
--- a/base/javascript-prop-types/test/inputs/json/misc/734ad.json/default/toplevel.js
+++ b/head/javascript-prop-types/test/inputs/json/misc/734ad.json/default/toplevel.js
@@ -39,7 +39,7 @@ _Result = PropTypes.shape({
     "be_office_town": PropTypes.oneOfType([PropTypes.oneOf([null]), PropTypes.string]),
     "code_of_conduct": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "contact_country": PropTypes.oneOfType([Integer]).isRequired,
-    "created_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "created_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "entity": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "goals": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "head": PropTypes.oneOfType([PropTypes.string]).isRequired,
@@ -54,7 +54,7 @@ _Result = PropTypes.shape({
     "id": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "identification_code": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "info_members": PropTypes.oneOfType([PropTypes.string]).isRequired,
-    "last_update_date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "last_update_date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "legal": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "legal_status": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "main_category": PropTypes.oneOfType([Integer]).isRequired,
@@ -70,12 +70,12 @@ _Result = PropTypes.shape({
     "networking": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOfType([PropTypes.oneOf([null]), PropTypes.string])])(props, name, ...args),
     "number_of_natural_persons": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOfType([Integer, PropTypes.oneOf([null])])])(props, name, ...args),
     "other_code_of_conduct": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOfType([PropTypes.oneOf([null]), PropTypes.string])])(props, name, ...args),
-    "registration_date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "registration_date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "status": _Status,
     "structure_members": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "sub_category": PropTypes.oneOfType([Integer]).isRequired,
     "sub_category_title": PropTypes.oneOfType([PropTypes.string]).isRequired,
-    "updated_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "updated_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "uri": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "web_site_url": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOfType([PropTypes.oneOf([null]), PropTypes.string])])(props, name, ...args),
 });
diff --git a/base/javascript-prop-types/test/inputs/json/misc/75912.json/default/toplevel.js b/head/javascript-prop-types/test/inputs/json/misc/75912.json/default/toplevel.js
index a431696..629dd81 100644
--- a/base/javascript-prop-types/test/inputs/json/misc/75912.json/default/toplevel.js
+++ b/head/javascript-prop-types/test/inputs/json/misc/75912.json/default/toplevel.js
@@ -15,7 +15,7 @@ import PropTypes from "prop-types";
 let _TopLevel;
 _TopLevel = PropTypes.shape({
     "base": PropTypes.oneOfType([PropTypes.string]).isRequired,
-    "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "rates": PropTypes.oneOfType([PropTypes.objectOf(PropTypes.number)]).isRequired,
 });
 
diff --git a/base/javascript-prop-types/test/inputs/json/misc/77392.json/default/toplevel.js b/head/javascript-prop-types/test/inputs/json/misc/77392.json/default/toplevel.js
index b1e5853..418f54c 100644
--- a/base/javascript-prop-types/test/inputs/json/misc/77392.json/default/toplevel.js
+++ b/head/javascript-prop-types/test/inputs/json/misc/77392.json/default/toplevel.js
@@ -17,7 +17,7 @@ const _OrbitClass = PropTypes.oneOf(['Apollo', 'Amor', 'Aten', 'Comet', 'Jupiter
 const _Pha = PropTypes.oneOf(['Y', 'N', 'n/a']);
 _TopLevel = PropTypes.shape({
     "designation": PropTypes.oneOfType([PropTypes.string]).isRequired,
-    "discovery_date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "discovery_date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "h_mag": PropTypes.oneOfType([PropTypes.oneOf([null]), PropTypes.string]),
     "i_deg": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "moid_au": PropTypes.oneOfType([PropTypes.string]).isRequired,
diff --git a/base/javascript-prop-types/test/inputs/json/misc/7dfa6.json/default/toplevel.js b/head/javascript-prop-types/test/inputs/json/misc/7dfa6.json/default/toplevel.js
index b5963bc..631f2e0 100644
--- a/base/javascript-prop-types/test/inputs/json/misc/7dfa6.json/default/toplevel.js
+++ b/head/javascript-prop-types/test/inputs/json/misc/7dfa6.json/default/toplevel.js
@@ -16,7 +16,7 @@ const Integer = (props, name) => props[name] == null || Number.isInteger(props[n
 let _TopLevel;
 let _TotalPopulation;
 _TotalPopulation = PropTypes.shape({
-    "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "population": PropTypes.oneOfType([Integer]).isRequired,
 });
 _TopLevel = PropTypes.shape({
diff --git a/base/javascript-prop-types/test/inputs/json/misc/7f568.json/default/toplevel.js b/head/javascript-prop-types/test/inputs/json/misc/7f568.json/default/toplevel.js
index 7192021..e3f996f 100644
--- a/base/javascript-prop-types/test/inputs/json/misc/7f568.json/default/toplevel.js
+++ b/head/javascript-prop-types/test/inputs/json/misc/7f568.json/default/toplevel.js
@@ -28,7 +28,7 @@ _TopLevel = PropTypes.shape({
     "comments": PropTypes.oneOfType([Integer]).isRequired,
     "comments_url": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "commits_url": PropTypes.oneOfType([PropTypes.string]).isRequired,
-    "created_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "created_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "description": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOfType([PropTypes.oneOf([null]), PropTypes.string])])(props, name, ...args),
     "files": PropTypes.oneOfType([PropTypes.objectOf(_File)]).isRequired,
     "forks_url": PropTypes.oneOfType([PropTypes.string]).isRequired,
@@ -38,7 +38,7 @@ _TopLevel = PropTypes.shape({
     "id": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "public": PropTypes.oneOfType([PropTypes.bool]).isRequired,
     "truncated": PropTypes.oneOfType([PropTypes.bool]).isRequired,
-    "updated_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "updated_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "url": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "user": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOf([null])])(props, name, ...args),
 });
diff --git a/base/javascript-prop-types/test/inputs/json/misc/80aff.json/default/toplevel.js b/head/javascript-prop-types/test/inputs/json/misc/80aff.json/default/toplevel.js
index 0186f46..db168b4 100644
--- a/base/javascript-prop-types/test/inputs/json/misc/80aff.json/default/toplevel.js
+++ b/head/javascript-prop-types/test/inputs/json/misc/80aff.json/default/toplevel.js
@@ -19,12 +19,12 @@ let _Result;
 _Facets = PropTypes.shape({
 });
 _Result = PropTypes.shape({
-    "created_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "created_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "id": PropTypes.oneOfType([Integer]).isRequired,
     "items": PropTypes.oneOfType([Integer]).isRequired,
     "name": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "parent": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOfType([Integer, PropTypes.oneOf([null])])])(props, name, ...args),
-    "updated_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "updated_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "uri": PropTypes.oneOfType([PropTypes.string]).isRequired,
 });
 _TopLevel = PropTypes.shape({
diff --git a/base/javascript-prop-types/test/inputs/json/misc/88130.json/default/toplevel.js b/head/javascript-prop-types/test/inputs/json/misc/88130.json/default/toplevel.js
index d6b9e6a..c3afab2 100644
--- a/base/javascript-prop-types/test/inputs/json/misc/88130.json/default/toplevel.js
+++ b/head/javascript-prop-types/test/inputs/json/misc/88130.json/default/toplevel.js
@@ -108,7 +108,7 @@ _Results = PropTypes.shape({
 });
 _Query = PropTypes.shape({
     "count": PropTypes.oneOfType([Integer]).isRequired,
-    "created": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "created": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "lang": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "results": _Results,
 });
diff --git a/base/javascript-prop-types/test/inputs/json/misc/8a62c.json/default/toplevel.js b/head/javascript-prop-types/test/inputs/json/misc/8a62c.json/default/toplevel.js
index b5963bc..631f2e0 100644
--- a/base/javascript-prop-types/test/inputs/json/misc/8a62c.json/default/toplevel.js
+++ b/head/javascript-prop-types/test/inputs/json/misc/8a62c.json/default/toplevel.js
@@ -16,7 +16,7 @@ const Integer = (props, name) => props[name] == null || Number.isInteger(props[n
 let _TopLevel;
 let _TotalPopulation;
 _TotalPopulation = PropTypes.shape({
-    "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "population": PropTypes.oneOfType([Integer]).isRequired,
 });
 _TopLevel = PropTypes.shape({
diff --git a/base/javascript-prop-types/test/inputs/json/misc/9617f.json/default/toplevel.js b/head/javascript-prop-types/test/inputs/json/misc/9617f.json/default/toplevel.js
index a431696..629dd81 100644
--- a/base/javascript-prop-types/test/inputs/json/misc/9617f.json/default/toplevel.js
+++ b/head/javascript-prop-types/test/inputs/json/misc/9617f.json/default/toplevel.js
@@ -15,7 +15,7 @@ import PropTypes from "prop-types";
 let _TopLevel;
 _TopLevel = PropTypes.shape({
     "base": PropTypes.oneOfType([PropTypes.string]).isRequired,
-    "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "rates": PropTypes.oneOfType([PropTypes.objectOf(PropTypes.number)]).isRequired,
 });
 
diff --git a/base/javascript-prop-types/test/inputs/json/misc/9929c.json/default/toplevel.js b/head/javascript-prop-types/test/inputs/json/misc/9929c.json/default/toplevel.js
index d6b9e6a..c3afab2 100644
--- a/base/javascript-prop-types/test/inputs/json/misc/9929c.json/default/toplevel.js
+++ b/head/javascript-prop-types/test/inputs/json/misc/9929c.json/default/toplevel.js
@@ -108,7 +108,7 @@ _Results = PropTypes.shape({
 });
 _Query = PropTypes.shape({
     "count": PropTypes.oneOfType([Integer]).isRequired,
-    "created": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "created": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "lang": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "results": _Results,
 });
diff --git a/base/javascript-prop-types/test/inputs/json/misc/9ac3b.json/default/toplevel.js b/head/javascript-prop-types/test/inputs/json/misc/9ac3b.json/default/toplevel.js
index 0341cba..c392f5a 100644
--- a/base/javascript-prop-types/test/inputs/json/misc/9ac3b.json/default/toplevel.js
+++ b/head/javascript-prop-types/test/inputs/json/misc/9ac3b.json/default/toplevel.js
@@ -21,7 +21,7 @@ const _Title = PropTypes.oneOf(['Mr', 'Ms']);
 _Facets = PropTypes.shape({
 });
 _Result = PropTypes.shape({
-    "created_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "created_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "entity": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "first_name": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "id": PropTypes.oneOfType([PropTypes.string]).isRequired,
@@ -30,7 +30,7 @@ _Result = PropTypes.shape({
     "position": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOfType([PropTypes.oneOf([null]), PropTypes.string])])(props, name, ...args),
     "status": _Status,
     "title": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOfType([_Title, PropTypes.oneOf([null])])])(props, name, ...args),
-    "updated_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "updated_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "uri": PropTypes.oneOfType([PropTypes.string]).isRequired,
 });
 _TopLevel = PropTypes.shape({
diff --git a/base/javascript-prop-types/test/inputs/json/misc/a0496.json/default/toplevel.js b/head/javascript-prop-types/test/inputs/json/misc/a0496.json/default/toplevel.js
index 4a953ad..b249cf9 100644
--- a/base/javascript-prop-types/test/inputs/json/misc/a0496.json/default/toplevel.js
+++ b/head/javascript-prop-types/test/inputs/json/misc/a0496.json/default/toplevel.js
@@ -20,20 +20,20 @@ _Errors = PropTypes.shape({
 _TopLevel = PropTypes.shape({
     "code": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "column_names": PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string)]).isRequired,
-    "data": PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.arrayOf(PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time"), PropTypes.number, PropTypes.oneOf([null])])))]).isRequired,
+    "data": PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.arrayOf(PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time"), PropTypes.number, PropTypes.oneOf([null])])))]).isRequired,
     "description": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "display_url": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "errors": _Errors,
     "frequency": PropTypes.oneOfType([PropTypes.string]).isRequired,
-    "from_date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "from_date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "id": PropTypes.oneOfType([Integer]).isRequired,
     "name": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "premium": PropTypes.oneOfType([PropTypes.bool]).isRequired,
     "source_code": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "source_name": PropTypes.oneOfType([PropTypes.string]).isRequired,
-    "to_date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "to_date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "type": PropTypes.oneOfType([PropTypes.string]).isRequired,
-    "updated_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "updated_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "urlize_name": PropTypes.oneOfType([PropTypes.string]).isRequired,
 });
 
diff --git a/base/javascript-prop-types/test/inputs/json/misc/a1eca.json/default/toplevel.js b/head/javascript-prop-types/test/inputs/json/misc/a1eca.json/default/toplevel.js
index d6b9e6a..c3afab2 100644
--- a/base/javascript-prop-types/test/inputs/json/misc/a1eca.json/default/toplevel.js
+++ b/head/javascript-prop-types/test/inputs/json/misc/a1eca.json/default/toplevel.js
@@ -108,7 +108,7 @@ _Results = PropTypes.shape({
 });
 _Query = PropTypes.shape({
     "count": PropTypes.oneOfType([Integer]).isRequired,
-    "created": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "created": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "lang": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "results": _Results,
 });
diff --git a/base/javascript-prop-types/test/inputs/json/misc/a9691.json/default/toplevel.js b/head/javascript-prop-types/test/inputs/json/misc/a9691.json/default/toplevel.js
index a431696..629dd81 100644
--- a/base/javascript-prop-types/test/inputs/json/misc/a9691.json/default/toplevel.js
+++ b/head/javascript-prop-types/test/inputs/json/misc/a9691.json/default/toplevel.js
@@ -15,7 +15,7 @@ import PropTypes from "prop-types";
 let _TopLevel;
 _TopLevel = PropTypes.shape({
     "base": PropTypes.oneOfType([PropTypes.string]).isRequired,
-    "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "rates": PropTypes.oneOfType([PropTypes.objectOf(PropTypes.number)]).isRequired,
 });
 
diff --git a/base/javascript-prop-types/test/inputs/json/misc/abb4b.json/default/toplevel.js b/head/javascript-prop-types/test/inputs/json/misc/abb4b.json/default/toplevel.js
index b5963bc..631f2e0 100644
--- a/base/javascript-prop-types/test/inputs/json/misc/abb4b.json/default/toplevel.js
+++ b/head/javascript-prop-types/test/inputs/json/misc/abb4b.json/default/toplevel.js
@@ -16,7 +16,7 @@ const Integer = (props, name) => props[name] == null || Number.isInteger(props[n
 let _TopLevel;
 let _TotalPopulation;
 _TotalPopulation = PropTypes.shape({
-    "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "population": PropTypes.oneOfType([Integer]).isRequired,
 });
 _TopLevel = PropTypes.shape({
diff --git a/base/javascript-prop-types/test/inputs/json/misc/ac944.json/default/toplevel.js b/head/javascript-prop-types/test/inputs/json/misc/ac944.json/default/toplevel.js
index a431696..629dd81 100644
--- a/base/javascript-prop-types/test/inputs/json/misc/ac944.json/default/toplevel.js
+++ b/head/javascript-prop-types/test/inputs/json/misc/ac944.json/default/toplevel.js
@@ -15,7 +15,7 @@ import PropTypes from "prop-types";
 let _TopLevel;
 _TopLevel = PropTypes.shape({
     "base": PropTypes.oneOfType([PropTypes.string]).isRequired,
-    "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "rates": PropTypes.oneOfType([PropTypes.objectOf(PropTypes.number)]).isRequired,
 });
 
diff --git a/base/javascript-prop-types/test/inputs/json/misc/b4865.json/default/toplevel.js b/head/javascript-prop-types/test/inputs/json/misc/b4865.json/default/toplevel.js
index 02343f6..05aa8c6 100644
--- a/base/javascript-prop-types/test/inputs/json/misc/b4865.json/default/toplevel.js
+++ b/head/javascript-prop-types/test/inputs/json/misc/b4865.json/default/toplevel.js
@@ -33,7 +33,7 @@ _TopLevel = PropTypes.shape({
     "recclass": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "reclat": PropTypes.oneOfType([PropTypes.oneOf([null]), PropTypes.string]),
     "reclong": PropTypes.oneOfType([PropTypes.oneOf([null]), PropTypes.string]),
-    "year": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time"), PropTypes.oneOf([null])]),
+    "year": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time"), PropTypes.oneOf([null])]),
 });
 
 export const TopLevel = PropTypes.arrayOf(_TopLevel);
diff --git a/base/javascript-prop-types/test/inputs/json/misc/b6f2c.json/default/toplevel.js b/head/javascript-prop-types/test/inputs/json/misc/b6f2c.json/default/toplevel.js
index b5963bc..631f2e0 100644
--- a/base/javascript-prop-types/test/inputs/json/misc/b6f2c.json/default/toplevel.js
+++ b/head/javascript-prop-types/test/inputs/json/misc/b6f2c.json/default/toplevel.js
@@ -16,7 +16,7 @@ const Integer = (props, name) => props[name] == null || Number.isInteger(props[n
 let _TopLevel;
 let _TotalPopulation;
 _TotalPopulation = PropTypes.shape({
-    "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "population": PropTypes.oneOfType([Integer]).isRequired,
 });
 _TopLevel = PropTypes.shape({
diff --git a/base/javascript-prop-types/test/inputs/json/misc/bb1ec.json/default/toplevel.js b/head/javascript-prop-types/test/inputs/json/misc/bb1ec.json/default/toplevel.js
index b5963bc..631f2e0 100644
--- a/base/javascript-prop-types/test/inputs/json/misc/bb1ec.json/default/toplevel.js
+++ b/head/javascript-prop-types/test/inputs/json/misc/bb1ec.json/default/toplevel.js
@@ -16,7 +16,7 @@ const Integer = (props, name) => props[name] == null || Number.isInteger(props[n
 let _TopLevel;
 let _TotalPopulation;
 _TotalPopulation = PropTypes.shape({
-    "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "population": PropTypes.oneOfType([Integer]).isRequired,
 });
 _TopLevel = PropTypes.shape({
diff --git a/base/javascript-prop-types/test/inputs/json/misc/cd463.json/default/toplevel.js b/head/javascript-prop-types/test/inputs/json/misc/cd463.json/default/toplevel.js
index a431696..629dd81 100644
--- a/base/javascript-prop-types/test/inputs/json/misc/cd463.json/default/toplevel.js
+++ b/head/javascript-prop-types/test/inputs/json/misc/cd463.json/default/toplevel.js
@@ -15,7 +15,7 @@ import PropTypes from "prop-types";
 let _TopLevel;
 _TopLevel = PropTypes.shape({
     "base": PropTypes.oneOfType([PropTypes.string]).isRequired,
-    "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "rates": PropTypes.oneOfType([PropTypes.objectOf(PropTypes.number)]).isRequired,
 });
 
diff --git a/base/javascript-prop-types/test/inputs/json/misc/cf0d8.json/default/toplevel.js b/head/javascript-prop-types/test/inputs/json/misc/cf0d8.json/default/toplevel.js
index d6b9e6a..c3afab2 100644
--- a/base/javascript-prop-types/test/inputs/json/misc/cf0d8.json/default/toplevel.js
+++ b/head/javascript-prop-types/test/inputs/json/misc/cf0d8.json/default/toplevel.js
@@ -108,7 +108,7 @@ _Results = PropTypes.shape({
 });
 _Query = PropTypes.shape({
     "count": PropTypes.oneOfType([Integer]).isRequired,
-    "created": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "created": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "lang": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "results": _Results,
 });
diff --git a/base/javascript-prop-types/test/inputs/json/misc/cfbce.json/default/toplevel.js b/head/javascript-prop-types/test/inputs/json/misc/cfbce.json/default/toplevel.js
index a431696..629dd81 100644
--- a/base/javascript-prop-types/test/inputs/json/misc/cfbce.json/default/toplevel.js
+++ b/head/javascript-prop-types/test/inputs/json/misc/cfbce.json/default/toplevel.js
@@ -15,7 +15,7 @@ import PropTypes from "prop-types";
 let _TopLevel;
 _TopLevel = PropTypes.shape({
     "base": PropTypes.oneOfType([PropTypes.string]).isRequired,
-    "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "rates": PropTypes.oneOfType([PropTypes.objectOf(PropTypes.number)]).isRequired,
 });
 
diff --git a/base/javascript-prop-types/test/inputs/json/misc/d0908.json/default/toplevel.js b/head/javascript-prop-types/test/inputs/json/misc/d0908.json/default/toplevel.js
index b5963bc..631f2e0 100644
--- a/base/javascript-prop-types/test/inputs/json/misc/d0908.json/default/toplevel.js
+++ b/head/javascript-prop-types/test/inputs/json/misc/d0908.json/default/toplevel.js
@@ -16,7 +16,7 @@ const Integer = (props, name) => props[name] == null || Number.isInteger(props[n
 let _TopLevel;
 let _TotalPopulation;
 _TotalPopulation = PropTypes.shape({
-    "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "population": PropTypes.oneOfType([Integer]).isRequired,
 });
 _TopLevel = PropTypes.shape({
diff --git a/base/javascript-prop-types/test/inputs/json/misc/d23d5.json/default/toplevel.js b/head/javascript-prop-types/test/inputs/json/misc/d23d5.json/default/toplevel.js
index ff8c0fa..488b2dd 100644
--- a/base/javascript-prop-types/test/inputs/json/misc/d23d5.json/default/toplevel.js
+++ b/head/javascript-prop-types/test/inputs/json/misc/d23d5.json/default/toplevel.js
@@ -20,10 +20,10 @@ _Facets = PropTypes.shape({
 });
 _Result = PropTypes.shape({
     "acronym": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOfType([PropTypes.oneOf([null]), PropTypes.string])])(props, name, ...args),
-    "created_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "created_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "id": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "name": PropTypes.oneOfType([PropTypes.string]).isRequired,
-    "updated_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "updated_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "uri": PropTypes.oneOfType([PropTypes.string]).isRequired,
 });
 _TopLevel = PropTypes.shape({
diff --git a/base/javascript-prop-types/test/inputs/json/misc/dbfb3.json/default/toplevel.js b/head/javascript-prop-types/test/inputs/json/misc/dbfb3.json/default/toplevel.js
index 8dc0d50..87a9119 100644
--- a/base/javascript-prop-types/test/inputs/json/misc/dbfb3.json/default/toplevel.js
+++ b/head/javascript-prop-types/test/inputs/json/misc/dbfb3.json/default/toplevel.js
@@ -109,7 +109,7 @@ _Results = PropTypes.shape({
 });
 _Query = PropTypes.shape({
     "count": PropTypes.oneOfType([Integer]).isRequired,
-    "created": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "created": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "lang": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "results": _Results,
 });
diff --git a/base/javascript-prop-types/test/inputs/json/misc/dc44f.json/default/toplevel.js b/head/javascript-prop-types/test/inputs/json/misc/dc44f.json/default/toplevel.js
index 43180df..acf6403 100644
--- a/base/javascript-prop-types/test/inputs/json/misc/dc44f.json/default/toplevel.js
+++ b/head/javascript-prop-types/test/inputs/json/misc/dc44f.json/default/toplevel.js
@@ -31,7 +31,7 @@ _LegalityElement = PropTypes.shape({
     "legality": _LegalityEnum,
 });
 _Ruling = PropTypes.shape({
-    "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "text": PropTypes.oneOfType([PropTypes.string]).isRequired,
 });
 _Card = PropTypes.shape({
@@ -73,7 +73,7 @@ _TopLevel = PropTypes.shape({
     "mkm_id": PropTypes.oneOfType([Integer]).isRequired,
     "mkm_name": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "name": PropTypes.oneOfType([PropTypes.string]).isRequired,
-    "releaseDate": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "releaseDate": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "type": PropTypes.oneOfType([PropTypes.string]).isRequired,
 });
 
diff --git a/base/javascript-prop-types/test/inputs/json/misc/dd1ce.json/default/toplevel.js b/head/javascript-prop-types/test/inputs/json/misc/dd1ce.json/default/toplevel.js
index 43180df..acf6403 100644
--- a/base/javascript-prop-types/test/inputs/json/misc/dd1ce.json/default/toplevel.js
+++ b/head/javascript-prop-types/test/inputs/json/misc/dd1ce.json/default/toplevel.js
@@ -31,7 +31,7 @@ _LegalityElement = PropTypes.shape({
     "legality": _LegalityEnum,
 });
 _Ruling = PropTypes.shape({
-    "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "text": PropTypes.oneOfType([PropTypes.string]).isRequired,
 });
 _Card = PropTypes.shape({
@@ -73,7 +73,7 @@ _TopLevel = PropTypes.shape({
     "mkm_id": PropTypes.oneOfType([Integer]).isRequired,
     "mkm_name": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "name": PropTypes.oneOfType([PropTypes.string]).isRequired,
-    "releaseDate": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "releaseDate": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "type": PropTypes.oneOfType([PropTypes.string]).isRequired,
 });
 
diff --git a/base/javascript-prop-types/test/inputs/json/misc/df957.json/default/toplevel.js b/head/javascript-prop-types/test/inputs/json/misc/df957.json/default/toplevel.js
index d6b9e6a..c3afab2 100644
--- a/base/javascript-prop-types/test/inputs/json/misc/df957.json/default/toplevel.js
+++ b/head/javascript-prop-types/test/inputs/json/misc/df957.json/default/toplevel.js
@@ -108,7 +108,7 @@ _Results = PropTypes.shape({
 });
 _Query = PropTypes.shape({
     "count": PropTypes.oneOfType([Integer]).isRequired,
-    "created": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "created": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "lang": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "results": _Results,
 });
diff --git a/base/javascript-prop-types/test/inputs/json/misc/e2915.json/default/toplevel.js b/head/javascript-prop-types/test/inputs/json/misc/e2915.json/default/toplevel.js
index e3dcc85..2591f2a 100644
--- a/base/javascript-prop-types/test/inputs/json/misc/e2915.json/default/toplevel.js
+++ b/head/javascript-prop-types/test/inputs/json/misc/e2915.json/default/toplevel.js
@@ -109,7 +109,7 @@ _Results = PropTypes.shape({
 });
 _Query = PropTypes.shape({
     "count": PropTypes.oneOfType([Integer]).isRequired,
-    "created": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "created": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "lang": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "results": _Results,
 });
diff --git a/base/javascript-prop-types/test/inputs/json/priority/bug2590.json/default/toplevel.js b/head/javascript-prop-types/test/inputs/json/priority/bug2590.json/default/toplevel.js
index 09b9b2c..1e4f4d3 100644
--- a/base/javascript-prop-types/test/inputs/json/priority/bug2590.json/default/toplevel.js
+++ b/head/javascript-prop-types/test/inputs/json/priority/bug2590.json/default/toplevel.js
@@ -15,8 +15,8 @@ import PropTypes from "prop-types";
 let _TopLevel;
 let _Invoice;
 _Invoice = PropTypes.shape({
-    "createdAt": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time"), PropTypes.oneOf([null])])])(props, name, ...args),
-    "dueDate": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time"), PropTypes.oneOf([null])])])(props, name, ...args),
+    "createdAt": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time"), PropTypes.oneOf([null])])])(props, name, ...args),
+    "dueDate": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time"), PropTypes.oneOf([null])])])(props, name, ...args),
     "name": PropTypes.oneOfType([PropTypes.string]).isRequired,
 });
 _TopLevel = PropTypes.shape({
diff --git a/base/javascript-prop-types/test/inputs/json/priority/bug2663.json/default/toplevel.js b/head/javascript-prop-types/test/inputs/json/priority/bug2663.json/default/toplevel.js
index 44a4865..fe4fae2 100644
--- a/base/javascript-prop-types/test/inputs/json/priority/bug2663.json/default/toplevel.js
+++ b/head/javascript-prop-types/test/inputs/json/priority/bug2663.json/default/toplevel.js
@@ -14,8 +14,8 @@ import PropTypes from "prop-types";
 
 let _TopLevel;
 _TopLevel = PropTypes.shape({
-    "birthday": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
-    "lastSeen": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "birthday": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
+    "lastSeen": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "name": PropTypes.oneOfType([PropTypes.string]).isRequired,
 });
 
diff --git a/base/javascript-prop-types/test/inputs/json/priority/keywords.json/default/toplevel.js b/head/javascript-prop-types/test/inputs/json/priority/keywords.json/default/toplevel.js
index 35e6f06..403232e 100644
--- a/base/javascript-prop-types/test/inputs/json/priority/keywords.json/default/toplevel.js
+++ b/head/javascript-prop-types/test/inputs/json/priority/keywords.json/default/toplevel.js
@@ -622,7 +622,7 @@ _DateOnlyConverter = PropTypes.shape({
     "DateOnlyConverter": PropTypes.oneOfType([Integer]).isRequired,
 });
 _DateTime = PropTypes.shape({
-    "DateTime": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "DateTime": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
 });
 _DateTimeStyles = PropTypes.shape({
     "DateTimeStyles": PropTypes.oneOfType([Integer]).isRequired,
diff --git a/base/javascript-prop-types/test/inputs/json/samples/github-events.json/default/toplevel.js b/head/javascript-prop-types/test/inputs/json/samples/github-events.json/default/toplevel.js
index fbf729f..2ef07db 100644
--- a/base/javascript-prop-types/test/inputs/json/samples/github-events.json/default/toplevel.js
+++ b/head/javascript-prop-types/test/inputs/json/samples/github-events.json/default/toplevel.js
@@ -60,11 +60,11 @@ _User = PropTypes.shape({
 });
 _Comment = PropTypes.shape({
     "body": PropTypes.oneOfType([PropTypes.string]).isRequired,
-    "created_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "created_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "html_url": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "id": PropTypes.oneOfType([Integer]).isRequired,
     "issue_url": PropTypes.oneOfType([PropTypes.string]).isRequired,
-    "updated_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "updated_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "url": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "user": _User,
 });
@@ -89,10 +89,10 @@ _Label = PropTypes.shape({
 _Milestone = PropTypes.shape({
     "closed_at": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOf([null])])(props, name, ...args),
     "closed_issues": PropTypes.oneOfType([Integer]).isRequired,
-    "created_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "created_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "creator": _User,
     "description": PropTypes.oneOfType([PropTypes.string]).isRequired,
-    "due_on": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time"), PropTypes.oneOf([null])])])(props, name, ...args),
+    "due_on": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time"), PropTypes.oneOf([null])])])(props, name, ...args),
     "html_url": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "id": PropTypes.oneOfType([Integer]).isRequired,
     "labels_url": PropTypes.oneOfType([PropTypes.string]).isRequired,
@@ -100,7 +100,7 @@ _Milestone = PropTypes.shape({
     "open_issues": PropTypes.oneOfType([Integer]).isRequired,
     "state": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "title": PropTypes.oneOfType([PropTypes.string]).isRequired,
-    "updated_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "updated_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "url": PropTypes.oneOfType([PropTypes.string]).isRequired,
 });
 _IssuePullRequest = PropTypes.shape({
@@ -113,10 +113,10 @@ _Issue = PropTypes.shape({
     "assignee": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOf([null])])(props, name, ...args),
     "assignees": PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.any)]).isRequired,
     "body": PropTypes.oneOfType([PropTypes.string]).isRequired,
-    "closed_at": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time"), PropTypes.oneOf([null])])])(props, name, ...args),
+    "closed_at": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time"), PropTypes.oneOf([null])])])(props, name, ...args),
     "comments": PropTypes.oneOfType([Integer]).isRequired,
     "comments_url": PropTypes.oneOfType([PropTypes.string]).isRequired,
-    "created_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "created_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "events_url": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "html_url": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "id": PropTypes.oneOfType([Integer]).isRequired,
@@ -129,7 +129,7 @@ _Issue = PropTypes.shape({
     "repository_url": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "state": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "title": PropTypes.oneOfType([PropTypes.string]).isRequired,
-    "updated_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "updated_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "url": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "user": _User,
 });
@@ -158,7 +158,7 @@ _BaseRepo = PropTypes.shape({
     "compare_url": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "contents_url": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "contributors_url": PropTypes.oneOfType([PropTypes.string]).isRequired,
-    "created_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "created_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "default_branch": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "deployments_url": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "description": PropTypes.oneOfType([PropTypes.string]).isRequired,
@@ -199,7 +199,7 @@ _BaseRepo = PropTypes.shape({
     "owner": _User,
     "private": PropTypes.oneOfType([PropTypes.bool]).isRequired,
     "pulls_url": PropTypes.oneOfType([PropTypes.string]).isRequired,
-    "pushed_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "pushed_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "releases_url": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "size": PropTypes.oneOfType([Integer]).isRequired,
     "ssh_url": PropTypes.oneOfType([PropTypes.string]).isRequired,
@@ -212,7 +212,7 @@ _BaseRepo = PropTypes.shape({
     "tags_url": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "teams_url": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "trees_url": PropTypes.oneOfType([PropTypes.string]).isRequired,
-    "updated_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "updated_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "url": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "watchers": PropTypes.oneOfType([Integer]).isRequired,
     "watchers_count": PropTypes.oneOfType([Integer]).isRequired,
@@ -232,12 +232,12 @@ _PayloadPullRequest = PropTypes.shape({
     "base": _Base,
     "body": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "changed_files": PropTypes.oneOfType([Integer]).isRequired,
-    "closed_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "closed_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "comments": PropTypes.oneOfType([Integer]).isRequired,
     "comments_url": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "commits": PropTypes.oneOfType([Integer]).isRequired,
     "commits_url": PropTypes.oneOfType([PropTypes.string]).isRequired,
-    "created_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "created_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "deletions": PropTypes.oneOfType([Integer]).isRequired,
     "diff_url": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "head": _Base,
@@ -250,7 +250,7 @@ _PayloadPullRequest = PropTypes.shape({
     "mergeable": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOf([null])])(props, name, ...args),
     "mergeable_state": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "merged": PropTypes.oneOfType([PropTypes.bool]).isRequired,
-    "merged_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "merged_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "merged_by": _User,
     "milestone": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOf([null])])(props, name, ...args),
     "number": PropTypes.oneOfType([Integer]).isRequired,
@@ -263,7 +263,7 @@ _PayloadPullRequest = PropTypes.shape({
     "state": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "statuses_url": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "title": PropTypes.oneOfType([PropTypes.string]).isRequired,
-    "updated_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "updated_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "url": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "user": _User,
 });
@@ -292,7 +292,7 @@ _TopLevelRepo = PropTypes.shape({
 });
 _TopLevel = PropTypes.shape({
     "actor": _Actor,
-    "created_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "created_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "id": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "org": PropTypes.oneOfType([_Actor, PropTypes.oneOf([null])]),
     "payload": _Payload,
diff --git a/base/javascript-prop-types/test/inputs/json/samples/null-safe.json/default/toplevel.js b/head/javascript-prop-types/test/inputs/json/samples/null-safe.json/default/toplevel.js
index 3a806b3..7eae6a3 100644
--- a/base/javascript-prop-types/test/inputs/json/samples/null-safe.json/default/toplevel.js
+++ b/head/javascript-prop-types/test/inputs/json/samples/null-safe.json/default/toplevel.js
@@ -23,7 +23,7 @@ _Address = PropTypes.shape({
 });
 _Item = PropTypes.shape({
     "address": PropTypes.oneOfType([_Address, PropTypes.oneOf([null])]),
-    "created_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time"), PropTypes.oneOf([null])]),
+    "created_at": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time"), PropTypes.oneOf([null])]),
     "name": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "sex": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOfType([Integer, PropTypes.oneOf([null])])])(props, name, ...args),
 });
diff --git a/base/javascript-prop-types/test/inputs/json/samples/us-senators.json/default/toplevel.js b/head/javascript-prop-types/test/inputs/json/samples/us-senators.json/default/toplevel.js
index 16d8f14..ccbb4c6 100644
--- a/base/javascript-prop-types/test/inputs/json/samples/us-senators.json/default/toplevel.js
+++ b/head/javascript-prop-types/test/inputs/json/samples/us-senators.json/default/toplevel.js
@@ -43,7 +43,7 @@ _Extra = PropTypes.shape({
 });
 _Person = PropTypes.shape({
     "bioguideid": PropTypes.oneOfType([PropTypes.string]).isRequired,
-    "birthday": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "birthday": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "cspanid": PropTypes.oneOfType([Integer]).isRequired,
     "firstname": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "gender": _Gender,
@@ -66,7 +66,7 @@ _Object = PropTypes.shape({
     "current": PropTypes.oneOfType([PropTypes.bool]).isRequired,
     "description": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "district": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOf([null])])(props, name, ...args),
-    "enddate": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "enddate": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "extra": _Extra,
     "leadership_title": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOfType([PropTypes.oneOf([null]), PropTypes.string])])(props, name, ...args),
     "party": _Party,
@@ -78,7 +78,7 @@ _Object = PropTypes.shape({
     "senator_class_label": _SenatorClassLabel,
     "senator_rank": _SenatorRank,
     "senator_rank_label": _SenatorRankLabel,
-    "startdate": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "startdate": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "state": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "title": _Title,
     "title_long": _RoleTypeLabel,
diff --git a/base/python/test/inputs/json/misc/0a358.json/default/quicktype.py b/head/python/test/inputs/json/misc/0a358.json/default/quicktype.py
index 641c8a2..8d5e455 100644
--- a/base/python/test/inputs/json/misc/0a358.json/default/quicktype.py
+++ b/head/python/test/inputs/json/misc/0a358.json/default/quicktype.py
@@ -13,7 +13,7 @@ def from_str(x: Any) -> str:
 
 
 def from_datetime(x: Any) -> datetime.datetime:
-    return dateutil.parser.parse(x)
+    return dateutil.parser.isoparse(x)
 
 
 def from_int(x: Any) -> int:
diff --git a/base/python/test/inputs/json/misc/0a91a.json/default/quicktype.py b/head/python/test/inputs/json/misc/0a91a.json/default/quicktype.py
index 24351d6..2414926 100644
--- a/base/python/test/inputs/json/misc/0a91a.json/default/quicktype.py
+++ b/head/python/test/inputs/json/misc/0a91a.json/default/quicktype.py
@@ -44,7 +44,7 @@ def to_class(c: Type[T], x: Any) -> dict:
 
 
 def from_datetime(x: Any) -> datetime.datetime:
-    return dateutil.parser.parse(x)
+    return dateutil.parser.isoparse(x)
 
 
 def from_list(f: Callable[[Any], T], x: Any) -> list[T]:
diff --git a/base/python/test/inputs/json/misc/16bc5.json/default/quicktype.py b/head/python/test/inputs/json/misc/16bc5.json/default/quicktype.py
index 8a37dff..81cd083 100644
--- a/base/python/test/inputs/json/misc/16bc5.json/default/quicktype.py
+++ b/head/python/test/inputs/json/misc/16bc5.json/default/quicktype.py
@@ -36,7 +36,7 @@ def from_int(x: Any) -> int:
 
 
 def from_datetime(x: Any) -> datetime.datetime:
-    return dateutil.parser.parse(x)
+    return dateutil.parser.isoparse(x)
 
 
 @dataclass
diff --git a/base/python/test/inputs/json/misc/262f0.json/default/quicktype.py b/head/python/test/inputs/json/misc/262f0.json/default/quicktype.py
index 670dc71..f79cb3d 100644
--- a/base/python/test/inputs/json/misc/262f0.json/default/quicktype.py
+++ b/head/python/test/inputs/json/misc/262f0.json/default/quicktype.py
@@ -43,7 +43,7 @@ def from_int(x: Any) -> int:
 
 
 def from_datetime(x: Any) -> datetime.datetime:
-    return dateutil.parser.parse(x)
+    return dateutil.parser.isoparse(x)
 
 
 @dataclass
diff --git a/base/python/test/inputs/json/misc/32d5c.json/default/quicktype.py b/head/python/test/inputs/json/misc/32d5c.json/default/quicktype.py
index ca86a95..0c9c76a 100644
--- a/base/python/test/inputs/json/misc/32d5c.json/default/quicktype.py
+++ b/head/python/test/inputs/json/misc/32d5c.json/default/quicktype.py
@@ -23,7 +23,7 @@ def from_str(x: Any) -> str:
 
 
 def from_datetime(x: Any) -> datetime.datetime:
-    return dateutil.parser.parse(x)
+    return dateutil.parser.isoparse(x)
 
 
 def from_none(x: Any) -> Any:
diff --git a/base/python/test/inputs/json/misc/337ed.json/default/quicktype.py b/head/python/test/inputs/json/misc/337ed.json/default/quicktype.py
index 9af0de3..ebd6ca4 100644
--- a/base/python/test/inputs/json/misc/337ed.json/default/quicktype.py
+++ b/head/python/test/inputs/json/misc/337ed.json/default/quicktype.py
@@ -15,7 +15,7 @@ def from_int(x: Any) -> int:
 
 
 def from_datetime(x: Any) -> datetime.datetime:
-    return dateutil.parser.parse(x)
+    return dateutil.parser.isoparse(x)
 
 
 def from_str(x: Any) -> str:
diff --git a/base/python/test/inputs/json/misc/3f1ce.json/default/quicktype.py b/head/python/test/inputs/json/misc/3f1ce.json/default/quicktype.py
index 4b297ab..97ff4b4 100644
--- a/base/python/test/inputs/json/misc/3f1ce.json/default/quicktype.py
+++ b/head/python/test/inputs/json/misc/3f1ce.json/default/quicktype.py
@@ -43,7 +43,7 @@ def from_int(x: Any) -> int:
 
 
 def from_datetime(x: Any) -> datetime.datetime:
-    return dateutil.parser.parse(x)
+    return dateutil.parser.isoparse(x)
 
 
 @dataclass
diff --git a/base/python/test/inputs/json/misc/4c547.json/default/quicktype.py b/head/python/test/inputs/json/misc/4c547.json/default/quicktype.py
index 8a37dff..81cd083 100644
--- a/base/python/test/inputs/json/misc/4c547.json/default/quicktype.py
+++ b/head/python/test/inputs/json/misc/4c547.json/default/quicktype.py
@@ -36,7 +36,7 @@ def from_int(x: Any) -> int:
 
 
 def from_datetime(x: Any) -> datetime.datetime:
-    return dateutil.parser.parse(x)
+    return dateutil.parser.isoparse(x)
 
 
 @dataclass
diff --git a/base/python/test/inputs/json/misc/54d32.json/default/quicktype.py b/head/python/test/inputs/json/misc/54d32.json/default/quicktype.py
index bc02262..6ceef56 100644
--- a/base/python/test/inputs/json/misc/54d32.json/default/quicktype.py
+++ b/head/python/test/inputs/json/misc/54d32.json/default/quicktype.py
@@ -10,7 +10,7 @@ EnumT = TypeVar("EnumT", bound=Enum)
 
 
 def from_datetime(x: Any) -> datetime.datetime:
-    return dateutil.parser.parse(x)
+    return dateutil.parser.isoparse(x)
 
 
 def from_str(x: Any) -> str:
diff --git a/base/python/test/inputs/json/misc/5eae5.json/default/quicktype.py b/head/python/test/inputs/json/misc/5eae5.json/default/quicktype.py
index 8a0b12b..870ad20 100644
--- a/base/python/test/inputs/json/misc/5eae5.json/default/quicktype.py
+++ b/head/python/test/inputs/json/misc/5eae5.json/default/quicktype.py
@@ -8,7 +8,7 @@ T = TypeVar("T")
 
 
 def from_datetime(x: Any) -> datetime.datetime:
-    return dateutil.parser.parse(x)
+    return dateutil.parser.isoparse(x)
 
 
 def from_int(x: Any) -> int:
diff --git a/base/python/test/inputs/json/misc/6dec6.json/default/quicktype.py b/head/python/test/inputs/json/misc/6dec6.json/default/quicktype.py
index ea5ab3c..376cee7 100644
--- a/base/python/test/inputs/json/misc/6dec6.json/default/quicktype.py
+++ b/head/python/test/inputs/json/misc/6dec6.json/default/quicktype.py
@@ -43,7 +43,7 @@ def from_int(x: Any) -> int:
 
 
 def from_datetime(x: Any) -> datetime.datetime:
-    return dateutil.parser.parse(x)
+    return dateutil.parser.isoparse(x)
 
 
 @dataclass
diff --git a/base/python/test/inputs/json/misc/734ad.json/default/quicktype.py b/head/python/test/inputs/json/misc/734ad.json/default/quicktype.py
index 729f05c..8ef5e61 100644
--- a/base/python/test/inputs/json/misc/734ad.json/default/quicktype.py
+++ b/head/python/test/inputs/json/misc/734ad.json/default/quicktype.py
@@ -20,7 +20,7 @@ def from_int(x: Any) -> int:
 
 
 def from_datetime(x: Any) -> datetime.datetime:
-    return dateutil.parser.parse(x)
+    return dateutil.parser.isoparse(x)
 
 
 def from_float(x: Any) -> float:
diff --git a/base/python/test/inputs/json/misc/77392.json/default/quicktype.py b/head/python/test/inputs/json/misc/77392.json/default/quicktype.py
index e360f77..41daa14 100644
--- a/base/python/test/inputs/json/misc/77392.json/default/quicktype.py
+++ b/head/python/test/inputs/json/misc/77392.json/default/quicktype.py
@@ -15,7 +15,7 @@ def from_str(x: Any) -> str:
 
 
 def from_datetime(x: Any) -> datetime.datetime:
-    return dateutil.parser.parse(x)
+    return dateutil.parser.isoparse(x)
 
 
 def from_none(x: Any) -> Any:
diff --git a/base/python/test/inputs/json/misc/7f568.json/default/quicktype.py b/head/python/test/inputs/json/misc/7f568.json/default/quicktype.py
index 31b9ce4..f58d1f4 100644
--- a/base/python/test/inputs/json/misc/7f568.json/default/quicktype.py
+++ b/head/python/test/inputs/json/misc/7f568.json/default/quicktype.py
@@ -39,7 +39,7 @@ def to_enum(c: Type[EnumT], x: Any) -> EnumT:
 
 
 def from_datetime(x: Any) -> datetime.datetime:
-    return dateutil.parser.parse(x)
+    return dateutil.parser.isoparse(x)
 
 
 def from_dict(f: Callable[[Any], T], x: Any) -> dict[str, T]:
diff --git a/base/python/test/inputs/json/misc/80aff.json/default/quicktype.py b/head/python/test/inputs/json/misc/80aff.json/default/quicktype.py
index 2d8124c..3f0d1d9 100644
--- a/base/python/test/inputs/json/misc/80aff.json/default/quicktype.py
+++ b/head/python/test/inputs/json/misc/80aff.json/default/quicktype.py
@@ -8,7 +8,7 @@ T = TypeVar("T")
 
 
 def from_datetime(x: Any) -> datetime.datetime:
-    return dateutil.parser.parse(x)
+    return dateutil.parser.isoparse(x)
 
 
 def from_int(x: Any) -> int:
diff --git a/base/python/test/inputs/json/misc/88130.json/default/quicktype.py b/head/python/test/inputs/json/misc/88130.json/default/quicktype.py
index 8a37dff..81cd083 100644
--- a/base/python/test/inputs/json/misc/88130.json/default/quicktype.py
+++ b/head/python/test/inputs/json/misc/88130.json/default/quicktype.py
@@ -36,7 +36,7 @@ def from_int(x: Any) -> int:
 
 
 def from_datetime(x: Any) -> datetime.datetime:
-    return dateutil.parser.parse(x)
+    return dateutil.parser.isoparse(x)
 
 
 @dataclass
diff --git a/base/python/test/inputs/json/misc/9929c.json/default/quicktype.py b/head/python/test/inputs/json/misc/9929c.json/default/quicktype.py
index 8a37dff..81cd083 100644
--- a/base/python/test/inputs/json/misc/9929c.json/default/quicktype.py
+++ b/head/python/test/inputs/json/misc/9929c.json/default/quicktype.py
@@ -36,7 +36,7 @@ def from_int(x: Any) -> int:
 
 
 def from_datetime(x: Any) -> datetime.datetime:
-    return dateutil.parser.parse(x)
+    return dateutil.parser.isoparse(x)
 
 
 @dataclass
diff --git a/base/python/test/inputs/json/misc/9ac3b.json/default/quicktype.py b/head/python/test/inputs/json/misc/9ac3b.json/default/quicktype.py
index 70825e8..668c220 100644
--- a/base/python/test/inputs/json/misc/9ac3b.json/default/quicktype.py
+++ b/head/python/test/inputs/json/misc/9ac3b.json/default/quicktype.py
@@ -10,7 +10,7 @@ EnumT = TypeVar("EnumT", bound=Enum)
 
 
 def from_datetime(x: Any) -> datetime.datetime:
-    return dateutil.parser.parse(x)
+    return dateutil.parser.isoparse(x)
 
 
 def from_str(x: Any) -> str:
diff --git a/base/python/test/inputs/json/misc/a0496.json/default/quicktype.py b/head/python/test/inputs/json/misc/a0496.json/default/quicktype.py
index 9646b63..3eb3fdc 100644
--- a/base/python/test/inputs/json/misc/a0496.json/default/quicktype.py
+++ b/head/python/test/inputs/json/misc/a0496.json/default/quicktype.py
@@ -53,7 +53,7 @@ def from_bool(x: Any) -> bool:
 
 
 def from_datetime(x: Any) -> datetime.datetime:
-    return dateutil.parser.parse(x)
+    return dateutil.parser.isoparse(x)
 
 
 def to_float(x: Any) -> float:
diff --git a/base/python/test/inputs/json/misc/a1eca.json/default/quicktype.py b/head/python/test/inputs/json/misc/a1eca.json/default/quicktype.py
index 8a37dff..81cd083 100644
--- a/base/python/test/inputs/json/misc/a1eca.json/default/quicktype.py
+++ b/head/python/test/inputs/json/misc/a1eca.json/default/quicktype.py
@@ -36,7 +36,7 @@ def from_int(x: Any) -> int:
 
 
 def from_datetime(x: Any) -> datetime.datetime:
-    return dateutil.parser.parse(x)
+    return dateutil.parser.isoparse(x)
 
 
 @dataclass
diff --git a/base/python/test/inputs/json/misc/b4865.json/default/quicktype.py b/head/python/test/inputs/json/misc/b4865.json/default/quicktype.py
index 91e4861..c3cf5df 100644
--- a/base/python/test/inputs/json/misc/b4865.json/default/quicktype.py
+++ b/head/python/test/inputs/json/misc/b4865.json/default/quicktype.py
@@ -49,7 +49,7 @@ def from_union(fs, x):
 
 
 def from_datetime(x: Any) -> datetime.datetime:
-    return dateutil.parser.parse(x)
+    return dateutil.parser.isoparse(x)
 
 
 def is_type(t: Type[T], x: Any) -> T:
diff --git a/base/python/test/inputs/json/misc/cf0d8.json/default/quicktype.py b/head/python/test/inputs/json/misc/cf0d8.json/default/quicktype.py
index 8a37dff..81cd083 100644
--- a/base/python/test/inputs/json/misc/cf0d8.json/default/quicktype.py
+++ b/head/python/test/inputs/json/misc/cf0d8.json/default/quicktype.py
@@ -36,7 +36,7 @@ def from_int(x: Any) -> int:
 
 
 def from_datetime(x: Any) -> datetime.datetime:
-    return dateutil.parser.parse(x)
+    return dateutil.parser.isoparse(x)
 
 
 @dataclass
diff --git a/base/python/test/inputs/json/misc/d23d5.json/default/quicktype.py b/head/python/test/inputs/json/misc/d23d5.json/default/quicktype.py
index ff759bb..a427894 100644
--- a/base/python/test/inputs/json/misc/d23d5.json/default/quicktype.py
+++ b/head/python/test/inputs/json/misc/d23d5.json/default/quicktype.py
@@ -8,7 +8,7 @@ T = TypeVar("T")
 
 
 def from_datetime(x: Any) -> datetime.datetime:
-    return dateutil.parser.parse(x)
+    return dateutil.parser.isoparse(x)
 
 
 def from_str(x: Any) -> str:
diff --git a/base/python/test/inputs/json/misc/dbfb3.json/default/quicktype.py b/head/python/test/inputs/json/misc/dbfb3.json/default/quicktype.py
index 4da4d7a..fad4d40 100644
--- a/base/python/test/inputs/json/misc/dbfb3.json/default/quicktype.py
+++ b/head/python/test/inputs/json/misc/dbfb3.json/default/quicktype.py
@@ -43,7 +43,7 @@ def from_int(x: Any) -> int:
 
 
 def from_datetime(x: Any) -> datetime.datetime:
-    return dateutil.parser.parse(x)
+    return dateutil.parser.isoparse(x)
 
 
 @dataclass
diff --git a/base/python/test/inputs/json/misc/df957.json/default/quicktype.py b/head/python/test/inputs/json/misc/df957.json/default/quicktype.py
index 8a37dff..81cd083 100644
--- a/base/python/test/inputs/json/misc/df957.json/default/quicktype.py
+++ b/head/python/test/inputs/json/misc/df957.json/default/quicktype.py
@@ -36,7 +36,7 @@ def from_int(x: Any) -> int:
 
 
 def from_datetime(x: Any) -> datetime.datetime:
-    return dateutil.parser.parse(x)
+    return dateutil.parser.isoparse(x)
 
 
 @dataclass
diff --git a/base/python/test/inputs/json/misc/e2915.json/default/quicktype.py b/head/python/test/inputs/json/misc/e2915.json/default/quicktype.py
index 7752d4c..9fe0985 100644
--- a/base/python/test/inputs/json/misc/e2915.json/default/quicktype.py
+++ b/head/python/test/inputs/json/misc/e2915.json/default/quicktype.py
@@ -43,7 +43,7 @@ def from_int(x: Any) -> int:
 
 
 def from_datetime(x: Any) -> datetime.datetime:
-    return dateutil.parser.parse(x)
+    return dateutil.parser.isoparse(x)
 
 
 @dataclass
diff --git a/base/python/test/inputs/json/priority/bug2590.json/default/quicktype.py b/head/python/test/inputs/json/priority/bug2590.json/default/quicktype.py
index 8b179c4..1b6e1dd 100644
--- a/base/python/test/inputs/json/priority/bug2590.json/default/quicktype.py
+++ b/head/python/test/inputs/json/priority/bug2590.json/default/quicktype.py
@@ -14,7 +14,7 @@ def from_str(x: Any) -> str:
 
 
 def from_datetime(x: Any) -> datetime.datetime:
-    return dateutil.parser.parse(x)
+    return dateutil.parser.isoparse(x)
 
 
 def from_none(x: Any) -> Any:
diff --git a/base/python/test/inputs/json/priority/bug2663.json/default/quicktype.py b/head/python/test/inputs/json/priority/bug2663.json/default/quicktype.py
index 608dc5f..f6ee8ac 100644
--- a/base/python/test/inputs/json/priority/bug2663.json/default/quicktype.py
+++ b/head/python/test/inputs/json/priority/bug2663.json/default/quicktype.py
@@ -14,7 +14,7 @@ def from_date(x: Any) -> datetime.date:
 
 
 def from_datetime(x: Any) -> datetime.datetime:
-    return dateutil.parser.parse(x)
+    return dateutil.parser.isoparse(x)
 
 
 def from_str(x: Any) -> str:
diff --git a/base/python/test/inputs/json/priority/keywords.json/default/quicktype.py b/head/python/test/inputs/json/priority/keywords.json/default/quicktype.py
index 5f50f37..98fd35b 100644
--- a/base/python/test/inputs/json/priority/keywords.json/default/quicktype.py
+++ b/head/python/test/inputs/json/priority/keywords.json/default/quicktype.py
@@ -21,7 +21,7 @@ def to_class(c: Type[T], x: Any) -> dict:
 
 
 def from_datetime(x: Any) -> datetime.datetime:
-    return dateutil.parser.parse(x)
+    return dateutil.parser.isoparse(x)
 
 
 def from_list(f: Callable[[Any], T], x: Any) -> list[T]:
diff --git a/base/python/test/inputs/json/samples/github-events.json/default/quicktype.py b/head/python/test/inputs/json/samples/github-events.json/default/quicktype.py
index 46828c4..a1c8751 100644
--- a/base/python/test/inputs/json/samples/github-events.json/default/quicktype.py
+++ b/head/python/test/inputs/json/samples/github-events.json/default/quicktype.py
@@ -44,7 +44,7 @@ def to_enum(c: Type[EnumT], x: Any) -> EnumT:
 
 
 def from_datetime(x: Any) -> datetime.datetime:
-    return dateutil.parser.parse(x)
+    return dateutil.parser.isoparse(x)
 
 
 def to_class(c: Type[T], x: Any) -> dict:
diff --git a/base/python/test/inputs/json/samples/null-safe.json/default/quicktype.py b/head/python/test/inputs/json/samples/null-safe.json/default/quicktype.py
index 2d55a73..1fabfb6 100644
--- a/base/python/test/inputs/json/samples/null-safe.json/default/quicktype.py
+++ b/head/python/test/inputs/json/samples/null-safe.json/default/quicktype.py
@@ -27,7 +27,7 @@ def from_union(fs, x):
 
 
 def from_datetime(x: Any) -> datetime.datetime:
-    return dateutil.parser.parse(x)
+    return dateutil.parser.isoparse(x)
 
 
 def from_int(x: Any) -> int:
diff --git a/base/schema-flow/test/inputs/schema/accessors.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/accessors.schema/default/TopLevel.js
index ed0a091..782c410 100644
--- a/base/schema-flow/test/inputs/schema/accessors.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/accessors.schema/default/TopLevel.js
@@ -106,15 +106,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/all-of-additional-properties-false.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/all-of-additional-properties-false.schema/default/TopLevel.js
index d743815..30facbe 100644
--- a/base/schema-flow/test/inputs/schema/all-of-additional-properties-false.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/all-of-additional-properties-false.schema/default/TopLevel.js
@@ -108,15 +108,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/any.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/any.schema/default/TopLevel.js
index 3caa726..9b41bf2 100644
--- a/base/schema-flow/test/inputs/schema/any.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/any.schema/default/TopLevel.js
@@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/bool-string.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/bool-string.schema/default/TopLevel.js
index 70047b7..de3bb1e 100644
--- a/base/schema-flow/test/inputs/schema/bool-string.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/bool-string.schema/default/TopLevel.js
@@ -105,15 +105,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/boolean-subschema.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/boolean-subschema.schema/default/TopLevel.js
index 6d78896..0ab5f8f 100644
--- a/base/schema-flow/test/inputs/schema/boolean-subschema.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/boolean-subschema.schema/default/TopLevel.js
@@ -99,15 +99,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/camelCase.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/camelCase.schema/default/TopLevel.js
index 49f21e3..e050014 100644
--- a/base/schema-flow/test/inputs/schema/camelCase.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/camelCase.schema/default/TopLevel.js
@@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/class-map-union.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/class-map-union.schema/default/TopLevel.js
index 6e0c142..f8747ce 100644
--- a/base/schema-flow/test/inputs/schema/class-map-union.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/class-map-union.schema/default/TopLevel.js
@@ -113,15 +113,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/class-with-additional.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/class-with-additional.schema/default/TopLevel.js
index 08a932c..319b5d0 100644
--- a/base/schema-flow/test/inputs/schema/class-with-additional.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/class-with-additional.schema/default/TopLevel.js
@@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/comment-injection-enum-nested-comment.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/comment-injection-enum-nested-comment.schema/default/TopLevel.js
index 64c81ff..03492d1 100644
--- a/base/schema-flow/test/inputs/schema/comment-injection-enum-nested-comment.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/comment-injection-enum-nested-comment.schema/default/TopLevel.js
@@ -111,15 +111,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/comment-injection-enum.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/comment-injection-enum.schema/default/TopLevel.js
index 0c9f1d8..7267743 100644
--- a/base/schema-flow/test/inputs/schema/comment-injection-enum.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/comment-injection-enum.schema/default/TopLevel.js
@@ -117,15 +117,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/comment-injection-nested-comment.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/comment-injection-nested-comment.schema/default/TopLevel.js
index 7d0263c..3883ea0 100644
--- a/base/schema-flow/test/inputs/schema/comment-injection-nested-comment.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/comment-injection-nested-comment.schema/default/TopLevel.js
@@ -108,15 +108,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/comment-injection.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/comment-injection.schema/default/TopLevel.js
index c2f99fa..a6c6ee5 100644
--- a/base/schema-flow/test/inputs/schema/comment-injection.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/comment-injection.schema/default/TopLevel.js
@@ -136,15 +136,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/const-non-string.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/const-non-string.schema/default/TopLevel.js
index e5760be..bfdefce 100644
--- a/base/schema-flow/test/inputs/schema/const-non-string.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/const-non-string.schema/default/TopLevel.js
@@ -104,15 +104,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/constructor.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/constructor.schema/default/TopLevel.js
index 7fab754..461857e 100644
--- a/base/schema-flow/test/inputs/schema/constructor.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/constructor.schema/default/TopLevel.js
@@ -102,15 +102,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/cut-enum.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/cut-enum.schema/default/TopLevel.js
index 8bcfba8..fd3804b 100644
--- a/base/schema-flow/test/inputs/schema/cut-enum.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/cut-enum.schema/default/TopLevel.js
@@ -97,15 +97,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/date-time-or-string.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/date-time-or-string.schema/default/TopLevel.js
index 4b5641b..159b882 100644
--- a/base/schema-flow/test/inputs/schema/date-time-or-string.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/date-time-or-string.schema/default/TopLevel.js
@@ -103,15 +103,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/date-time.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/date-time.schema/default/TopLevel.js
index b997df9..5679fa7 100644
--- a/base/schema-flow/test/inputs/schema/date-time.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/date-time.schema/default/TopLevel.js
@@ -106,15 +106,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/default-value.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/default-value.schema/default/TopLevel.js
index 27641af..9529bb0 100644
--- a/base/schema-flow/test/inputs/schema/default-value.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/default-value.schema/default/TopLevel.js
@@ -99,15 +99,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/description-with-double-quotes.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/description-with-double-quotes.schema/default/TopLevel.js
index 99f0151..460c470 100644
--- a/base/schema-flow/test/inputs/schema/description-with-double-quotes.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/description-with-double-quotes.schema/default/TopLevel.js
@@ -100,15 +100,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/description.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/description.schema/default/TopLevel.js
index 9437fdf..8a80a17 100644
--- a/base/schema-flow/test/inputs/schema/description.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/description.schema/default/TopLevel.js
@@ -135,15 +135,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/direct-union.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/direct-union.schema/default/TopLevel.js
index 36fabbe..953338d 100644
--- a/base/schema-flow/test/inputs/schema/direct-union.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/direct-union.schema/default/TopLevel.js
@@ -103,15 +103,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/empty-object.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/empty-object.schema/default/TopLevel.js
index 927b959..3b57852 100644
--- a/base/schema-flow/test/inputs/schema/empty-object.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/empty-object.schema/default/TopLevel.js
@@ -94,15 +94,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/enum-large.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/enum-large.schema/default/TopLevel.js
index 95fe325..da2bc16 100644
--- a/base/schema-flow/test/inputs/schema/enum-large.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/enum-large.schema/default/TopLevel.js
@@ -125,15 +125,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/enum-with-null.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/enum-with-null.schema/default/TopLevel.js
index 977676c..6d8d098 100644
--- a/base/schema-flow/test/inputs/schema/enum-with-null.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/enum-with-null.schema/default/TopLevel.js
@@ -100,15 +100,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/enum-with-values.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/enum-with-values.schema/default/TopLevel.js
index 2a784b2..b984eb2 100644
--- a/base/schema-flow/test/inputs/schema/enum-with-values.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/enum-with-values.schema/default/TopLevel.js
@@ -106,15 +106,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/enum.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/enum.schema/default/TopLevel.js
index dd8cbee..6fe5b6c 100644
--- a/base/schema-flow/test/inputs/schema/enum.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/enum.schema/default/TopLevel.js
@@ -118,15 +118,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/fractional-bounds.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/fractional-bounds.schema/default/TopLevel.js
index 659e15a..022ded2 100644
--- a/base/schema-flow/test/inputs/schema/fractional-bounds.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/fractional-bounds.schema/default/TopLevel.js
@@ -97,15 +97,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/go-schema-pattern-properties.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/go-schema-pattern-properties.schema/default/TopLevel.js
index 36e0de3..35ad8a1 100644
--- a/base/schema-flow/test/inputs/schema/go-schema-pattern-properties.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/go-schema-pattern-properties.schema/default/TopLevel.js
@@ -97,15 +97,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/haskell-enum-forbidden.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/haskell-enum-forbidden.schema/default/TopLevel.js
index b4ebe7e..4142df5 100644
--- a/base/schema-flow/test/inputs/schema/haskell-enum-forbidden.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/haskell-enum-forbidden.schema/default/TopLevel.js
@@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/id-no-address.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/id-no-address.schema/default/TopLevel.js
index 02b448a..94dd602 100644
--- a/base/schema-flow/test/inputs/schema/id-no-address.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/id-no-address.schema/default/TopLevel.js
@@ -97,15 +97,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/id-root.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/id-root.schema/default/TopLevel.js
index 06fdc40..0da7b3c 100644
--- a/base/schema-flow/test/inputs/schema/id-root.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/id-root.schema/default/TopLevel.js
@@ -97,15 +97,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/ie-suffix-singularization.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/ie-suffix-singularization.schema/default/TopLevel.js
index b66fd0e..282e724 100644
--- a/base/schema-flow/test/inputs/schema/ie-suffix-singularization.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/ie-suffix-singularization.schema/default/TopLevel.js
@@ -103,15 +103,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/implicit-all-of.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/implicit-all-of.schema/default/TopLevel.js
index dfa52a2..3e5b1af 100644
--- a/base/schema-flow/test/inputs/schema/implicit-all-of.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/implicit-all-of.schema/default/TopLevel.js
@@ -99,15 +99,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/implicit-class-array-union.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/implicit-class-array-union.schema/default/TopLevel.js
index eae2989..7c09067 100644
--- a/base/schema-flow/test/inputs/schema/implicit-class-array-union.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/implicit-class-array-union.schema/default/TopLevel.js
@@ -104,15 +104,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/implicit-one-of.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/implicit-one-of.schema/default/TopLevel.js
index 1e6199d..028af63 100644
--- a/base/schema-flow/test/inputs/schema/implicit-one-of.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/implicit-one-of.schema/default/TopLevel.js
@@ -99,15 +99,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/integer-before-number.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/integer-before-number.schema/default/TopLevel.js
index cafdd42..c7d038a 100644
--- a/base/schema-flow/test/inputs/schema/integer-before-number.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/integer-before-number.schema/default/TopLevel.js
@@ -97,15 +97,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/integer-float-union.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/integer-float-union.schema/default/TopLevel.js
index 4d21bdb..c434c99 100644
--- a/base/schema-flow/test/inputs/schema/integer-float-union.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/integer-float-union.schema/default/TopLevel.js
@@ -97,15 +97,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/integer-string.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/integer-string.schema/default/TopLevel.js
index f1fd0c1..ef28a5e 100644
--- a/base/schema-flow/test/inputs/schema/integer-string.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/integer-string.schema/default/TopLevel.js
@@ -105,15 +105,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/integer-type.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/integer-type.schema/default/TopLevel.js
index 9752ccd..51b83f3 100644
--- a/base/schema-flow/test/inputs/schema/integer-type.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/integer-type.schema/default/TopLevel.js
@@ -105,15 +105,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/intersection-nested.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/intersection-nested.schema/default/TopLevel.js
index 2a6f912..58885fc 100644
--- a/base/schema-flow/test/inputs/schema/intersection-nested.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/intersection-nested.schema/default/TopLevel.js
@@ -96,15 +96,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/intersection.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/intersection.schema/default/TopLevel.js
index 5bd4bca..7ff9370 100644
--- a/base/schema-flow/test/inputs/schema/intersection.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/intersection.schema/default/TopLevel.js
@@ -102,15 +102,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/issue2680-top-level-array.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/issue2680-top-level-array.schema/default/TopLevel.js
index ca2e55f..57ef2c0 100644
--- a/base/schema-flow/test/inputs/schema/issue2680-top-level-array.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/issue2680-top-level-array.schema/default/TopLevel.js
@@ -94,15 +94,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/keyword-enum.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/keyword-enum.schema/default/TopLevel.js
index 128a01d..bbfdfd0 100644
--- a/base/schema-flow/test/inputs/schema/keyword-enum.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/keyword-enum.schema/default/TopLevel.js
@@ -432,15 +432,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/keyword-unions.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/keyword-unions.schema/default/TopLevel.js
index 4853789..0ba6f6c 100644
--- a/base/schema-flow/test/inputs/schema/keyword-unions.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/keyword-unions.schema/default/TopLevel.js
@@ -2089,15 +2089,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/light.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/light.schema/default/TopLevel.js
index 543b31b..87eb58e 100644
--- a/base/schema-flow/test/inputs/schema/light.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/light.schema/default/TopLevel.js
@@ -102,15 +102,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/list.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/list.schema/default/TopLevel.js
index 44f1946..17c0e10 100644
--- a/base/schema-flow/test/inputs/schema/list.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/list.schema/default/TopLevel.js
@@ -100,15 +100,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/min-max-items.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/min-max-items.schema/default/TopLevel.js
index 5457085..669266c 100644
--- a/base/schema-flow/test/inputs/schema/min-max-items.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/min-max-items.schema/default/TopLevel.js
@@ -103,15 +103,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/minmax-integer.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/minmax-integer.schema/default/TopLevel.js
index b9416df..60be51d 100644
--- a/base/schema-flow/test/inputs/schema/minmax-integer.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/minmax-integer.schema/default/TopLevel.js
@@ -104,15 +104,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/minmax.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/minmax.schema/default/TopLevel.js
index d11463f..d58225c 100644
--- a/base/schema-flow/test/inputs/schema/minmax.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/minmax.schema/default/TopLevel.js
@@ -104,15 +104,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/minmaxlength.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/minmaxlength.schema/default/TopLevel.js
index e14929d..bd4537b 100644
--- a/base/schema-flow/test/inputs/schema/minmaxlength.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/minmaxlength.schema/default/TopLevel.js
@@ -106,15 +106,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/multi-type-enum.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/multi-type-enum.schema/default/TopLevel.js
index 90af2e3..61a8238 100644
--- a/base/schema-flow/test/inputs/schema/multi-type-enum.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/multi-type-enum.schema/default/TopLevel.js
@@ -104,15 +104,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/mutually-recursive.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/mutually-recursive.schema/default/TopLevel.js
index de0b803..cbf3645 100644
--- a/base/schema-flow/test/inputs/schema/mutually-recursive.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/mutually-recursive.schema/default/TopLevel.js
@@ -104,15 +104,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/nested-intersection-union.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/nested-intersection-union.schema/default/TopLevel.js
index 54107c2..11caa97 100644
--- a/base/schema-flow/test/inputs/schema/nested-intersection-union.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/nested-intersection-union.schema/default/TopLevel.js
@@ -104,15 +104,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/non-standard-ref.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/non-standard-ref.schema/default/TopLevel.js
index e99afaf..63ee252 100644
--- a/base/schema-flow/test/inputs/schema/non-standard-ref.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/non-standard-ref.schema/default/TopLevel.js
@@ -99,15 +99,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/nullable-optional-one-of.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/nullable-optional-one-of.schema/default/TopLevel.js
index fb3ad05..b682aea 100644
--- a/base/schema-flow/test/inputs/schema/nullable-optional-one-of.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/nullable-optional-one-of.schema/default/TopLevel.js
@@ -102,15 +102,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/object-type-required.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/object-type-required.schema/default/TopLevel.js
index 6c80cc7..695aabc 100644
--- a/base/schema-flow/test/inputs/schema/object-type-required.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/object-type-required.schema/default/TopLevel.js
@@ -102,15 +102,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/optional-any.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/optional-any.schema/default/TopLevel.js
index 2086565..e3ef54d 100644
--- a/base/schema-flow/test/inputs/schema/optional-any.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/optional-any.schema/default/TopLevel.js
@@ -97,15 +97,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/optional-const-ref.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/optional-const-ref.schema/default/TopLevel.js
index 8b3e613..c6e94b4 100644
--- a/base/schema-flow/test/inputs/schema/optional-const-ref.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/optional-const-ref.schema/default/TopLevel.js
@@ -107,15 +107,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/optional-constraints.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/optional-constraints.schema/default/TopLevel.js
index e38562c..3afc5fb 100644
--- a/base/schema-flow/test/inputs/schema/optional-constraints.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/optional-constraints.schema/default/TopLevel.js
@@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/optional-date-time.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/optional-date-time.schema/default/TopLevel.js
index 227e26d..5c5a63e 100644
--- a/base/schema-flow/test/inputs/schema/optional-date-time.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/optional-date-time.schema/default/TopLevel.js
@@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/optional-enum.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/optional-enum.schema/default/TopLevel.js
index a508c4d..5708ba1 100644
--- a/base/schema-flow/test/inputs/schema/optional-enum.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/optional-enum.schema/default/TopLevel.js
@@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/optional-property.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/optional-property.schema/default/TopLevel.js
index 55b7275..9e8c173 100644
--- a/base/schema-flow/test/inputs/schema/optional-property.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/optional-property.schema/default/TopLevel.js
@@ -96,15 +96,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/pattern.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/pattern.schema/default/TopLevel.js
index 742042d..7259f33 100644
--- a/base/schema-flow/test/inputs/schema/pattern.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/pattern.schema/default/TopLevel.js
@@ -104,15 +104,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/postman-collection.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/postman-collection.schema/default/TopLevel.js
index e9935fd..8139ed9 100644
--- a/base/schema-flow/test/inputs/schema/postman-collection.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/postman-collection.schema/default/TopLevel.js
@@ -107,15 +107,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/prefix-items.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/prefix-items.schema/default/TopLevel.js
index c913dfa..de153a7 100644
--- a/base/schema-flow/test/inputs/schema/prefix-items.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/prefix-items.schema/default/TopLevel.js
@@ -100,15 +100,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/recursive-union-flattening.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/recursive-union-flattening.schema/default/TopLevel.js
index de79406..b1766ee 100644
--- a/base/schema-flow/test/inputs/schema/recursive-union-flattening.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/recursive-union-flattening.schema/default/TopLevel.js
@@ -110,15 +110,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/ref-id-files.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/ref-id-files.schema/default/TopLevel.js
index 8bcfba8..fd3804b 100644
--- a/base/schema-flow/test/inputs/schema/ref-id-files.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/ref-id-files.schema/default/TopLevel.js
@@ -97,15 +97,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/ref-remote.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/ref-remote.schema/default/TopLevel.js
index 44f1946..17c0e10 100644
--- a/base/schema-flow/test/inputs/schema/ref-remote.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/ref-remote.schema/default/TopLevel.js
@@ -100,15 +100,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/renaming-bug.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/renaming-bug.schema/default/TopLevel.js
index deb218a..bfa4e9f 100644
--- a/base/schema-flow/test/inputs/schema/renaming-bug.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/renaming-bug.schema/default/TopLevel.js
@@ -199,15 +199,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/required-draft3.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/required-draft3.schema/default/TopLevel.js
index 9215e15..d35b9e7 100644
--- a/base/schema-flow/test/inputs/schema/required-draft3.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/required-draft3.schema/default/TopLevel.js
@@ -97,15 +97,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/required-non-properties.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/required-non-properties.schema/default/TopLevel.js
index e16631b..99c86ad 100644
--- a/base/schema-flow/test/inputs/schema/required-non-properties.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/required-non-properties.schema/default/TopLevel.js
@@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/required.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/required.schema/default/TopLevel.js
index 9215e15..d35b9e7 100644
--- a/base/schema-flow/test/inputs/schema/required.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/required.schema/default/TopLevel.js
@@ -97,15 +97,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/rust-cycle-breaker-union.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/rust-cycle-breaker-union.schema/default/TopLevel.js
index 5e77234..9868a9b 100644
--- a/base/schema-flow/test/inputs/schema/rust-cycle-breaker-union.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/rust-cycle-breaker-union.schema/default/TopLevel.js
@@ -106,15 +106,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/schema-constraints.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/schema-constraints.schema/default/TopLevel.js
index 0271d25..2f38303 100644
--- a/base/schema-flow/test/inputs/schema/schema-constraints.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/schema-constraints.schema/default/TopLevel.js
@@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/simple-ref.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/simple-ref.schema/default/TopLevel.js
index 44f1946..17c0e10 100644
--- a/base/schema-flow/test/inputs/schema/simple-ref.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/simple-ref.schema/default/TopLevel.js
@@ -100,15 +100,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/strict-optional.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/strict-optional.schema/default/TopLevel.js
index b76d70d..f385a6f 100644
--- a/base/schema-flow/test/inputs/schema/strict-optional.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/strict-optional.schema/default/TopLevel.js
@@ -97,15 +97,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/top-level-array.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/top-level-array.schema/default/TopLevel.js
index a9fd035..6db6cca 100644
--- a/base/schema-flow/test/inputs/schema/top-level-array.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/top-level-array.schema/default/TopLevel.js
@@ -100,15 +100,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/top-level-enum.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/top-level-enum.schema/default/TopLevel.js
index 5785da7..e182a8b 100644
--- a/base/schema-flow/test/inputs/schema/top-level-enum.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/top-level-enum.schema/default/TopLevel.js
@@ -97,15 +97,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/top-level-primitive-array.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/top-level-primitive-array.schema/default/TopLevel.js
index dbd707d..c8d59da 100644
--- a/base/schema-flow/test/inputs/schema/top-level-primitive-array.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/top-level-primitive-array.schema/default/TopLevel.js
@@ -94,15 +94,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/top-level-primitive.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/top-level-primitive.schema/default/TopLevel.js
index c3feca8..bd2bada 100644
--- a/base/schema-flow/test/inputs/schema/top-level-primitive.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/top-level-primitive.schema/default/TopLevel.js
@@ -97,15 +97,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/tuple.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/tuple.schema/default/TopLevel.js
index 3b046d0..0a3be23 100644
--- a/base/schema-flow/test/inputs/schema/tuple.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/tuple.schema/default/TopLevel.js
@@ -99,15 +99,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/unevaluated-properties.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/unevaluated-properties.schema/default/TopLevel.js
index 93fa6de..8c9f7fb 100644
--- a/base/schema-flow/test/inputs/schema/unevaluated-properties.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/unevaluated-properties.schema/default/TopLevel.js
@@ -115,15 +115,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/unicode-codepoint-length.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/unicode-codepoint-length.schema/default/TopLevel.js
index 4e6b0c8..ab0a898 100644
--- a/base/schema-flow/test/inputs/schema/unicode-codepoint-length.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/unicode-codepoint-length.schema/default/TopLevel.js
@@ -99,15 +99,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/union-int-double.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/union-int-double.schema/default/TopLevel.js
index 4a2de7e..0e237ee 100644
--- a/base/schema-flow/test/inputs/schema/union-int-double.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/union-int-double.schema/default/TopLevel.js
@@ -99,15 +99,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/union-list.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/union-list.schema/default/TopLevel.js
index 0035e27..2b31d51 100644
--- a/base/schema-flow/test/inputs/schema/union-list.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/union-list.schema/default/TopLevel.js
@@ -102,15 +102,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/union.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/union.schema/default/TopLevel.js
index e878132..af3f6dc 100644
--- a/base/schema-flow/test/inputs/schema/union.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/union.schema/default/TopLevel.js
@@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/uuid.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/uuid.schema/default/TopLevel.js
index 37d0ba5..b30ae68 100644
--- a/base/schema-flow/test/inputs/schema/uuid.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/uuid.schema/default/TopLevel.js
@@ -107,15 +107,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-flow/test/inputs/schema/vega-lite.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/vega-lite.schema/default/TopLevel.js
index 04de345..e870aef 100644
--- a/base/schema-flow/test/inputs/schema/vega-lite.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/vega-lite.schema/default/TopLevel.js
@@ -6188,15 +6188,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/accessors.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/accessors.schema/default/TopLevel.js
index 69c04ff..eb93e60 100644
--- a/base/schema-javascript/test/inputs/schema/accessors.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/accessors.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/all-of-additional-properties-false.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/all-of-additional-properties-false.schema/default/TopLevel.js
index 53a5bbd..01d1011 100644
--- a/base/schema-javascript/test/inputs/schema/all-of-additional-properties-false.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/all-of-additional-properties-false.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/any.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/any.schema/default/TopLevel.js
index a8151b3..93439e6 100644
--- a/base/schema-javascript/test/inputs/schema/any.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/any.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/bool-string.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/bool-string.schema/default/TopLevel.js
index 79de87c..d5a8ec8 100644
--- a/base/schema-javascript/test/inputs/schema/bool-string.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/bool-string.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/boolean-subschema.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/boolean-subschema.schema/default/TopLevel.js
index 21d8228..596d20f 100644
--- a/base/schema-javascript/test/inputs/schema/boolean-subschema.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/boolean-subschema.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/camelCase.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/camelCase.schema/default/TopLevel.js
index a7583ae..4b3914b 100644
--- a/base/schema-javascript/test/inputs/schema/camelCase.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/camelCase.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/class-map-union.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/class-map-union.schema/default/TopLevel.js
index e6d9f54..0c7c22f 100644
--- a/base/schema-javascript/test/inputs/schema/class-map-union.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/class-map-union.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/class-with-additional.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/class-with-additional.schema/default/TopLevel.js
index ff332ec..13e6554 100644
--- a/base/schema-javascript/test/inputs/schema/class-with-additional.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/class-with-additional.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/comment-injection-enum-nested-comment.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/comment-injection-enum-nested-comment.schema/default/TopLevel.js
index 9f0d519..df87d90 100644
--- a/base/schema-javascript/test/inputs/schema/comment-injection-enum-nested-comment.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/comment-injection-enum-nested-comment.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/comment-injection-enum.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/comment-injection-enum.schema/default/TopLevel.js
index 9f0d519..df87d90 100644
--- a/base/schema-javascript/test/inputs/schema/comment-injection-enum.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/comment-injection-enum.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/comment-injection-nested-comment.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/comment-injection-nested-comment.schema/default/TopLevel.js
index 9e2fe83..d5f1013 100644
--- a/base/schema-javascript/test/inputs/schema/comment-injection-nested-comment.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/comment-injection-nested-comment.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/comment-injection.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/comment-injection.schema/default/TopLevel.js
index 6fe2498..fc9edb9 100644
--- a/base/schema-javascript/test/inputs/schema/comment-injection.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/comment-injection.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/const-non-string.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/const-non-string.schema/default/TopLevel.js
index b9fc19a..633025b 100644
--- a/base/schema-javascript/test/inputs/schema/const-non-string.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/const-non-string.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/constructor.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/constructor.schema/default/TopLevel.js
index 46a779a..38db74a 100644
--- a/base/schema-javascript/test/inputs/schema/constructor.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/constructor.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/cut-enum.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/cut-enum.schema/default/TopLevel.js
index 1fdaef4..8f33714 100644
--- a/base/schema-javascript/test/inputs/schema/cut-enum.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/cut-enum.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/date-time-or-string.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/date-time-or-string.schema/default/TopLevel.js
index 2c2b9b3..02a84a3 100644
--- a/base/schema-javascript/test/inputs/schema/date-time-or-string.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/date-time-or-string.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/date-time.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/date-time.schema/default/TopLevel.js
index e7dd092..e3c81ff 100644
--- a/base/schema-javascript/test/inputs/schema/date-time.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/date-time.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/default-value.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/default-value.schema/default/TopLevel.js
index f9047aa..fed7bb6 100644
--- a/base/schema-javascript/test/inputs/schema/default-value.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/default-value.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/description-with-double-quotes.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/description-with-double-quotes.schema/default/TopLevel.js
index c4a79d8..a60a61d 100644
--- a/base/schema-javascript/test/inputs/schema/description-with-double-quotes.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/description-with-double-quotes.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/description.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/description.schema/default/TopLevel.js
index d7f837e..9beaaae 100644
--- a/base/schema-javascript/test/inputs/schema/description.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/description.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/direct-union.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/direct-union.schema/default/TopLevel.js
index cff8a14..bd3ee9a 100644
--- a/base/schema-javascript/test/inputs/schema/direct-union.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/direct-union.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/empty-object.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/empty-object.schema/default/TopLevel.js
index 5e458b7..57bbea2 100644
--- a/base/schema-javascript/test/inputs/schema/empty-object.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/empty-object.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/enum-large.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/enum-large.schema/default/TopLevel.js
index f1d35f6..a0aed2b 100644
--- a/base/schema-javascript/test/inputs/schema/enum-large.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/enum-large.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/enum-with-null.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/enum-with-null.schema/default/TopLevel.js
index 83dd7a1..492c8d8 100644
--- a/base/schema-javascript/test/inputs/schema/enum-with-null.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/enum-with-null.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/enum-with-values.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/enum-with-values.schema/default/TopLevel.js
index 033ef77..c7ec8cd 100644
--- a/base/schema-javascript/test/inputs/schema/enum-with-values.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/enum-with-values.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/enum.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/enum.schema/default/TopLevel.js
index 55c852e..2242ba6 100644
--- a/base/schema-javascript/test/inputs/schema/enum.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/enum.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/fractional-bounds.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/fractional-bounds.schema/default/TopLevel.js
index 8d392ab..2f0bc8f 100644
--- a/base/schema-javascript/test/inputs/schema/fractional-bounds.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/fractional-bounds.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/go-schema-pattern-properties.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/go-schema-pattern-properties.schema/default/TopLevel.js
index 40070ec..e5d80d9 100644
--- a/base/schema-javascript/test/inputs/schema/go-schema-pattern-properties.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/go-schema-pattern-properties.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/haskell-enum-forbidden.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/haskell-enum-forbidden.schema/default/TopLevel.js
index 43b753e..074fee8 100644
--- a/base/schema-javascript/test/inputs/schema/haskell-enum-forbidden.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/haskell-enum-forbidden.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/id-no-address.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/id-no-address.schema/default/TopLevel.js
index df9f1b9..8ceabb8 100644
--- a/base/schema-javascript/test/inputs/schema/id-no-address.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/id-no-address.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/id-root.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/id-root.schema/default/TopLevel.js
index 11e398f..c70a4f7 100644
--- a/base/schema-javascript/test/inputs/schema/id-root.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/id-root.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/ie-suffix-singularization.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/ie-suffix-singularization.schema/default/TopLevel.js
index 1a21e65..b293c44 100644
--- a/base/schema-javascript/test/inputs/schema/ie-suffix-singularization.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/ie-suffix-singularization.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/implicit-all-of.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/implicit-all-of.schema/default/TopLevel.js
index 0471da9..afc3a12 100644
--- a/base/schema-javascript/test/inputs/schema/implicit-all-of.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/implicit-all-of.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/implicit-class-array-union.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/implicit-class-array-union.schema/default/TopLevel.js
index a8b86d0..7b6d864 100644
--- a/base/schema-javascript/test/inputs/schema/implicit-class-array-union.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/implicit-class-array-union.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/implicit-one-of.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/implicit-one-of.schema/default/TopLevel.js
index 1cb7ea3..77234bf 100644
--- a/base/schema-javascript/test/inputs/schema/implicit-one-of.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/implicit-one-of.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/integer-before-number.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/integer-before-number.schema/default/TopLevel.js
index 4444829..0be94db 100644
--- a/base/schema-javascript/test/inputs/schema/integer-before-number.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/integer-before-number.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/integer-float-union.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/integer-float-union.schema/default/TopLevel.js
index d9fcf81..dbc9c1a 100644
--- a/base/schema-javascript/test/inputs/schema/integer-float-union.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/integer-float-union.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/integer-string.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/integer-string.schema/default/TopLevel.js
index 851aba0..0464053 100644
--- a/base/schema-javascript/test/inputs/schema/integer-string.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/integer-string.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/integer-type.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/integer-type.schema/default/TopLevel.js
index 13f98e6..b132e1a 100644
--- a/base/schema-javascript/test/inputs/schema/integer-type.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/integer-type.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/intersection-nested.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/intersection-nested.schema/default/TopLevel.js
index d3c137e..42c8812 100644
--- a/base/schema-javascript/test/inputs/schema/intersection-nested.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/intersection-nested.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/intersection.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/intersection.schema/default/TopLevel.js
index 0b06cd8..a7c7c5e 100644
--- a/base/schema-javascript/test/inputs/schema/intersection.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/intersection.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/issue2680-top-level-array.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/issue2680-top-level-array.schema/default/TopLevel.js
index 3fad4a2..9515706 100644
--- a/base/schema-javascript/test/inputs/schema/issue2680-top-level-array.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/issue2680-top-level-array.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/keyword-enum.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/keyword-enum.schema/default/TopLevel.js
index 0e388a2..72b3ce1 100644
--- a/base/schema-javascript/test/inputs/schema/keyword-enum.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/keyword-enum.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/keyword-unions.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/keyword-unions.schema/default/TopLevel.js
index 3534ef1..39cbbd5 100644
--- a/base/schema-javascript/test/inputs/schema/keyword-unions.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/keyword-unions.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/light.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/light.schema/default/TopLevel.js
index cf3c010..728625c 100644
--- a/base/schema-javascript/test/inputs/schema/light.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/light.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/list.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/list.schema/default/TopLevel.js
index 7cfdfa2..2374532 100644
--- a/base/schema-javascript/test/inputs/schema/list.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/list.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/min-max-items.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/min-max-items.schema/default/TopLevel.js
index 8d5f8bc..b484c0d 100644
--- a/base/schema-javascript/test/inputs/schema/min-max-items.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/min-max-items.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/minmax-integer.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/minmax-integer.schema/default/TopLevel.js
index 2eee85d..d29d8cb 100644
--- a/base/schema-javascript/test/inputs/schema/minmax-integer.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/minmax-integer.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/minmax.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/minmax.schema/default/TopLevel.js
index d69739f..ef1dd4c 100644
--- a/base/schema-javascript/test/inputs/schema/minmax.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/minmax.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/minmaxlength.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/minmaxlength.schema/default/TopLevel.js
index ac4ad44..7fbee31 100644
--- a/base/schema-javascript/test/inputs/schema/minmaxlength.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/minmaxlength.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/multi-type-enum.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/multi-type-enum.schema/default/TopLevel.js
index fd7aa19..c378dc9 100644
--- a/base/schema-javascript/test/inputs/schema/multi-type-enum.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/multi-type-enum.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/mutually-recursive.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/mutually-recursive.schema/default/TopLevel.js
index 21e0ade..ac03b2a 100644
--- a/base/schema-javascript/test/inputs/schema/mutually-recursive.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/mutually-recursive.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/nested-intersection-union.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/nested-intersection-union.schema/default/TopLevel.js
index 9bf729a..5fcdf07 100644
--- a/base/schema-javascript/test/inputs/schema/nested-intersection-union.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/nested-intersection-union.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/non-standard-ref.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/non-standard-ref.schema/default/TopLevel.js
index 3fdfd7d..b3dee50 100644
--- a/base/schema-javascript/test/inputs/schema/non-standard-ref.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/non-standard-ref.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/nullable-optional-one-of.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/nullable-optional-one-of.schema/default/TopLevel.js
index 0c42edc..ad02812 100644
--- a/base/schema-javascript/test/inputs/schema/nullable-optional-one-of.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/nullable-optional-one-of.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/object-type-required.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/object-type-required.schema/default/TopLevel.js
index 58ae2ee..4b78556 100644
--- a/base/schema-javascript/test/inputs/schema/object-type-required.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/object-type-required.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/optional-any.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/optional-any.schema/default/TopLevel.js
index 0a148a7..cb9365b 100644
--- a/base/schema-javascript/test/inputs/schema/optional-any.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/optional-any.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/optional-const-ref.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/optional-const-ref.schema/default/TopLevel.js
index c5a6a09..d9d25b7 100644
--- a/base/schema-javascript/test/inputs/schema/optional-const-ref.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/optional-const-ref.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/optional-constraints.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/optional-constraints.schema/default/TopLevel.js
index dd19151..dfcbd91 100644
--- a/base/schema-javascript/test/inputs/schema/optional-constraints.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/optional-constraints.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/optional-date-time.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/optional-date-time.schema/default/TopLevel.js
index 7660661..464092f 100644
--- a/base/schema-javascript/test/inputs/schema/optional-date-time.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/optional-date-time.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/optional-enum.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/optional-enum.schema/default/TopLevel.js
index 99c4552..b06093c 100644
--- a/base/schema-javascript/test/inputs/schema/optional-enum.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/optional-enum.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/optional-property.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/optional-property.schema/default/TopLevel.js
index e2c50ce..60e3446 100644
--- a/base/schema-javascript/test/inputs/schema/optional-property.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/optional-property.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/pattern.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/pattern.schema/default/TopLevel.js
index e6622c5..4b96753 100644
--- a/base/schema-javascript/test/inputs/schema/pattern.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/pattern.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/postman-collection.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/postman-collection.schema/default/TopLevel.js
index d89cd99..87d210f 100644
--- a/base/schema-javascript/test/inputs/schema/postman-collection.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/postman-collection.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/prefix-items.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/prefix-items.schema/default/TopLevel.js
index 9e7a9fc..b2316bd 100644
--- a/base/schema-javascript/test/inputs/schema/prefix-items.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/prefix-items.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/recursive-union-flattening.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/recursive-union-flattening.schema/default/TopLevel.js
index 25f3fb8..17a3209 100644
--- a/base/schema-javascript/test/inputs/schema/recursive-union-flattening.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/recursive-union-flattening.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/ref-id-files.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/ref-id-files.schema/default/TopLevel.js
index 1fdaef4..8f33714 100644
--- a/base/schema-javascript/test/inputs/schema/ref-id-files.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/ref-id-files.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/ref-remote.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/ref-remote.schema/default/TopLevel.js
index 7cfdfa2..2374532 100644
--- a/base/schema-javascript/test/inputs/schema/ref-remote.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/ref-remote.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/renaming-bug.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/renaming-bug.schema/default/TopLevel.js
index 57b66a4..6759356 100644
--- a/base/schema-javascript/test/inputs/schema/renaming-bug.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/renaming-bug.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/required-draft3.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/required-draft3.schema/default/TopLevel.js
index 9d0a91b..28f27ca 100644
--- a/base/schema-javascript/test/inputs/schema/required-draft3.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/required-draft3.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/required-non-properties.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/required-non-properties.schema/default/TopLevel.js
index cb00d70..4f4880b 100644
--- a/base/schema-javascript/test/inputs/schema/required-non-properties.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/required-non-properties.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/required.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/required.schema/default/TopLevel.js
index 9d0a91b..28f27ca 100644
--- a/base/schema-javascript/test/inputs/schema/required.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/required.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/rust-cycle-breaker-union.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/rust-cycle-breaker-union.schema/default/TopLevel.js
index dc9a19d..c5a3d56 100644
--- a/base/schema-javascript/test/inputs/schema/rust-cycle-breaker-union.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/rust-cycle-breaker-union.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/schema-constraints.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/schema-constraints.schema/default/TopLevel.js
index e94c2b9..90aacfd 100644
--- a/base/schema-javascript/test/inputs/schema/schema-constraints.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/schema-constraints.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/simple-ref.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/simple-ref.schema/default/TopLevel.js
index 7cfdfa2..2374532 100644
--- a/base/schema-javascript/test/inputs/schema/simple-ref.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/simple-ref.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/strict-optional.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/strict-optional.schema/default/TopLevel.js
index e506dee..fc674aa 100644
--- a/base/schema-javascript/test/inputs/schema/strict-optional.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/strict-optional.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/top-level-array.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/top-level-array.schema/default/TopLevel.js
index 28a7dd8..c52556d 100644
--- a/base/schema-javascript/test/inputs/schema/top-level-array.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/top-level-array.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/top-level-enum.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/top-level-enum.schema/default/TopLevel.js
index 186c7ca..a86a1a2 100644
--- a/base/schema-javascript/test/inputs/schema/top-level-enum.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/top-level-enum.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/top-level-primitive-array.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/top-level-primitive-array.schema/default/TopLevel.js
index 3d43ec6..b35df94 100644
--- a/base/schema-javascript/test/inputs/schema/top-level-primitive-array.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/top-level-primitive-array.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/top-level-primitive.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/top-level-primitive.schema/default/TopLevel.js
index 0f26ab9..28cb102 100644
--- a/base/schema-javascript/test/inputs/schema/top-level-primitive.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/top-level-primitive.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/tuple.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/tuple.schema/default/TopLevel.js
index 71acd02..0d95545 100644
--- a/base/schema-javascript/test/inputs/schema/tuple.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/tuple.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/unevaluated-properties.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/unevaluated-properties.schema/default/TopLevel.js
index 59da8a4..2608ea9 100644
--- a/base/schema-javascript/test/inputs/schema/unevaluated-properties.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/unevaluated-properties.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/unicode-codepoint-length.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/unicode-codepoint-length.schema/default/TopLevel.js
index 7dbdb10..d82c497 100644
--- a/base/schema-javascript/test/inputs/schema/unicode-codepoint-length.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/unicode-codepoint-length.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/union-int-double.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/union-int-double.schema/default/TopLevel.js
index 9cd2c26..02359d9 100644
--- a/base/schema-javascript/test/inputs/schema/union-int-double.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/union-int-double.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/union-list.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/union-list.schema/default/TopLevel.js
index 4b29dbb..a10786e 100644
--- a/base/schema-javascript/test/inputs/schema/union-list.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/union-list.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/union.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/union.schema/default/TopLevel.js
index d3722b4..7b9e08f 100644
--- a/base/schema-javascript/test/inputs/schema/union.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/union.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/uuid.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/uuid.schema/default/TopLevel.js
index 8af7e1c..4694515 100644
--- a/base/schema-javascript/test/inputs/schema/uuid.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/uuid.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript/test/inputs/schema/vega-lite.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/vega-lite.schema/default/TopLevel.js
index bd3068c..61dcf18 100644
--- a/base/schema-javascript/test/inputs/schema/vega-lite.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/vega-lite.schema/default/TopLevel.js
@@ -90,15 +90,10 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-javascript-prop-types/test/inputs/schema/date-time-or-string.schema/default/toplevel.js b/head/schema-javascript-prop-types/test/inputs/schema/date-time-or-string.schema/default/toplevel.js
index 0151516..d9fdb47 100644
--- a/base/schema-javascript-prop-types/test/inputs/schema/date-time-or-string.schema/default/toplevel.js
+++ b/head/schema-javascript-prop-types/test/inputs/schema/date-time-or-string.schema/default/toplevel.js
@@ -15,7 +15,7 @@ import PropTypes from "prop-types";
 let _TopLevel;
 const _BarEnum = PropTypes.oneOf(['quux']);
 _TopLevel = PropTypes.shape({
-    "bar": PropTypes.oneOfType([PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time"), _BarEnum])]).isRequired,
+    "bar": PropTypes.oneOfType([PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time"), _BarEnum])]).isRequired,
     "foo": PropTypes.oneOfType([PropTypes.string]).isRequired,
 });
 
diff --git a/base/schema-javascript-prop-types/test/inputs/schema/date-time.schema/default/toplevel.js b/head/schema-javascript-prop-types/test/inputs/schema/date-time.schema/default/toplevel.js
index 016171d..dc1ae7b 100644
--- a/base/schema-javascript-prop-types/test/inputs/schema/date-time.schema/default/toplevel.js
+++ b/head/schema-javascript-prop-types/test/inputs/schema/date-time.schema/default/toplevel.js
@@ -16,9 +16,9 @@ const Integer = (props, name) => props[name] == null || Number.isInteger(props[n
 let _TopLevel;
 const _ComplexUnionArrayEnum = PropTypes.oneOf(['foo', 'bar']);
 _TopLevel = PropTypes.shape({
-    "complex-union-array": PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time"), _ComplexUnionArrayEnum, Integer]))]).isRequired,
-    "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
-    "date-time": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "complex-union-array": PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time"), _ComplexUnionArrayEnum, Integer]))]).isRequired,
+    "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
+    "date-time": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "time": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "union-array": PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string)]).isRequired,
 });
diff --git a/base/schema-javascript-prop-types/test/inputs/schema/optional-date-time.schema/default/toplevel.js b/head/schema-javascript-prop-types/test/inputs/schema/optional-date-time.schema/default/toplevel.js
index 712282b..0d17754 100644
--- a/base/schema-javascript-prop-types/test/inputs/schema/optional-date-time.schema/default/toplevel.js
+++ b/head/schema-javascript-prop-types/test/inputs/schema/optional-date-time.schema/default/toplevel.js
@@ -14,11 +14,11 @@ import PropTypes from "prop-types";
 
 let _TopLevel;
 _TopLevel = PropTypes.shape({
-    "optional-date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time"), PropTypes.oneOf([null])]),
-    "optional-date-time": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time"), PropTypes.oneOf([null])]),
+    "optional-date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time"), PropTypes.oneOf([null])]),
+    "optional-date-time": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time"), PropTypes.oneOf([null])]),
     "optional-time": PropTypes.oneOfType([PropTypes.oneOf([null]), PropTypes.string]),
-    "required-date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
-    "required-date-time": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && /^(\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01]))(?:T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d))?$/i.test(props[name]) && !Number.isNaN(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)) && new Date(Date.parse(`${props[name].slice(0, 10)}T00:00:00Z`)).toISOString().slice(0, 10) === props[name].slice(0, 10) ? null : new Error("Expected date-time")]).isRequired,
+    "required-date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
+    "required-date-time": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "required-time": PropTypes.oneOfType([PropTypes.string]).isRequired,
 });
 
diff --git a/base/schema-python/test/inputs/schema/date-time-or-string.schema/default/quicktype.py b/head/schema-python/test/inputs/schema/date-time-or-string.schema/default/quicktype.py
index ff33799..5fae995 100644
--- a/base/schema-python/test/inputs/schema/date-time-or-string.schema/default/quicktype.py
+++ b/head/schema-python/test/inputs/schema/date-time-or-string.schema/default/quicktype.py
@@ -10,7 +10,7 @@ EnumT = TypeVar("EnumT", bound=Enum)
 
 
 def from_datetime(x: Any) -> datetime.datetime:
-    return dateutil.parser.parse(x)
+    return dateutil.parser.isoparse(x)
 
 
 def from_union(fs, x):
diff --git a/base/schema-python/test/inputs/schema/date-time.schema/default/quicktype.py b/head/schema-python/test/inputs/schema/date-time.schema/default/quicktype.py
index 3e734ee..8b9a43a 100644
--- a/base/schema-python/test/inputs/schema/date-time.schema/default/quicktype.py
+++ b/head/schema-python/test/inputs/schema/date-time.schema/default/quicktype.py
@@ -21,7 +21,7 @@ def from_int(x: Any) -> int:
 
 
 def from_datetime(x: Any) -> datetime.datetime:
-    return dateutil.parser.parse(x)
+    return dateutil.parser.isoparse(x)
 
 
 def from_union(fs, x):
@@ -39,7 +39,7 @@ def from_date(x: Any) -> datetime.date:
 
 
 def from_time(x: Any) -> datetime.time:
-    assert isinstance(x, str) and re.match(r"^\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})?$", x)
+    assert isinstance(x, str) and re.match(r"^\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:[Zz]|[+-]\d{2}:\d{2})?$", x)
     return dateutil.parser.parse(x).timetz()
 
 
diff --git a/base/schema-python/test/inputs/schema/optional-date-time.schema/default/quicktype.py b/head/schema-python/test/inputs/schema/optional-date-time.schema/default/quicktype.py
index 6679c21..df341f5 100644
--- a/base/schema-python/test/inputs/schema/optional-date-time.schema/default/quicktype.py
+++ b/head/schema-python/test/inputs/schema/optional-date-time.schema/default/quicktype.py
@@ -14,11 +14,11 @@ def from_date(x: Any) -> datetime.date:
 
 
 def from_datetime(x: Any) -> datetime.datetime:
-    return dateutil.parser.parse(x)
+    return dateutil.parser.isoparse(x)
 
 
 def from_time(x: Any) -> datetime.time:
-    assert isinstance(x, str) and re.match(r"^\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})?$", x)
+    assert isinstance(x, str) and re.match(r"^\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:[Zz]|[+-]\d{2}:\d{2})?$", x)
     return dateutil.parser.parse(x).timetz()
 
 
diff --git a/base/schema-typescript/test/inputs/schema/accessors.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/accessors.schema/default/TopLevel.ts
index 15de886..eb5c28b 100644
--- a/base/schema-typescript/test/inputs/schema/accessors.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/accessors.schema/default/TopLevel.ts
@@ -103,15 +103,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/all-of-additional-properties-false.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/all-of-additional-properties-false.schema/default/TopLevel.ts
index 052d7b8..3a1e7c3 100644
--- a/base/schema-typescript/test/inputs/schema/all-of-additional-properties-false.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/all-of-additional-properties-false.schema/default/TopLevel.ts
@@ -103,15 +103,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/any.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/any.schema/default/TopLevel.ts
index c8fc58a..293a64c 100644
--- a/base/schema-typescript/test/inputs/schema/any.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/any.schema/default/TopLevel.ts
@@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/bool-string.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/bool-string.schema/default/TopLevel.ts
index 5c173e3..8604379 100644
--- a/base/schema-typescript/test/inputs/schema/bool-string.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/bool-string.schema/default/TopLevel.ts
@@ -105,15 +105,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/boolean-subschema.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/boolean-subschema.schema/default/TopLevel.ts
index 6e9b2ff..f2945d4 100644
--- a/base/schema-typescript/test/inputs/schema/boolean-subschema.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/boolean-subschema.schema/default/TopLevel.ts
@@ -99,15 +99,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/camelCase.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/camelCase.schema/default/TopLevel.ts
index cbd2cc3..1c2f56a 100644
--- a/base/schema-typescript/test/inputs/schema/camelCase.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/camelCase.schema/default/TopLevel.ts
@@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/class-map-union.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/class-map-union.schema/default/TopLevel.ts
index cf00c09..dedacb8 100644
--- a/base/schema-typescript/test/inputs/schema/class-map-union.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/class-map-union.schema/default/TopLevel.ts
@@ -113,15 +113,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/class-with-additional.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/class-with-additional.schema/default/TopLevel.ts
index 841d828..15df75c 100644
--- a/base/schema-typescript/test/inputs/schema/class-with-additional.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/class-with-additional.schema/default/TopLevel.ts
@@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/comment-injection-enum-nested-comment.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/comment-injection-enum-nested-comment.schema/default/TopLevel.ts
index 8b95765..934c40e 100644
--- a/base/schema-typescript/test/inputs/schema/comment-injection-enum-nested-comment.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/comment-injection-enum-nested-comment.schema/default/TopLevel.ts
@@ -110,15 +110,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/comment-injection-enum.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/comment-injection-enum.schema/default/TopLevel.ts
index a2cb294..2a64dc5 100644
--- a/base/schema-typescript/test/inputs/schema/comment-injection-enum.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/comment-injection-enum.schema/default/TopLevel.ts
@@ -116,15 +116,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/comment-injection-nested-comment.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/comment-injection-nested-comment.schema/default/TopLevel.ts
index 4e63492..504b925 100644
--- a/base/schema-typescript/test/inputs/schema/comment-injection-nested-comment.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/comment-injection-nested-comment.schema/default/TopLevel.ts
@@ -108,15 +108,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/comment-injection.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/comment-injection.schema/default/TopLevel.ts
index b741906..7b4e86e 100644
--- a/base/schema-typescript/test/inputs/schema/comment-injection.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/comment-injection.schema/default/TopLevel.ts
@@ -136,15 +136,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/const-non-string.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/const-non-string.schema/default/TopLevel.ts
index 0e87de9..471597a 100644
--- a/base/schema-typescript/test/inputs/schema/const-non-string.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/const-non-string.schema/default/TopLevel.ts
@@ -103,15 +103,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/constructor.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/constructor.schema/default/TopLevel.ts
index 994bb02..213c0ae 100644
--- a/base/schema-typescript/test/inputs/schema/constructor.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/constructor.schema/default/TopLevel.ts
@@ -99,15 +99,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/cut-enum.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/cut-enum.schema/default/TopLevel.ts
index e3e13d6..4b340a1 100644
--- a/base/schema-typescript/test/inputs/schema/cut-enum.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/cut-enum.schema/default/TopLevel.ts
@@ -97,15 +97,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/date-time-or-string.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/date-time-or-string.schema/default/TopLevel.ts
index fd23a30..f2f2b10 100644
--- a/base/schema-typescript/test/inputs/schema/date-time-or-string.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/date-time-or-string.schema/default/TopLevel.ts
@@ -102,15 +102,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/date-time.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/date-time.schema/default/TopLevel.ts
index 27f5426..4427935 100644
--- a/base/schema-typescript/test/inputs/schema/date-time.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/date-time.schema/default/TopLevel.ts
@@ -104,15 +104,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/default-value.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/default-value.schema/default/TopLevel.ts
index c89e9b3..3b6063c 100644
--- a/base/schema-typescript/test/inputs/schema/default-value.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/default-value.schema/default/TopLevel.ts
@@ -99,15 +99,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/description-with-double-quotes.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/description-with-double-quotes.schema/default/TopLevel.ts
index ac1d1cf..5fa5b81 100644
--- a/base/schema-typescript/test/inputs/schema/description-with-double-quotes.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/description-with-double-quotes.schema/default/TopLevel.ts
@@ -100,15 +100,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/description.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/description.schema/default/TopLevel.ts
index ef14f47..239362c 100644
--- a/base/schema-typescript/test/inputs/schema/description.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/description.schema/default/TopLevel.ts
@@ -133,15 +133,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/direct-union.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/direct-union.schema/default/TopLevel.ts
index ad0e766..7c30718 100644
--- a/base/schema-typescript/test/inputs/schema/direct-union.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/direct-union.schema/default/TopLevel.ts
@@ -103,15 +103,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/empty-object.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/empty-object.schema/default/TopLevel.ts
index 1c5fb57..ad5255b 100644
--- a/base/schema-typescript/test/inputs/schema/empty-object.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/empty-object.schema/default/TopLevel.ts
@@ -94,15 +94,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/enum-large.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/enum-large.schema/default/TopLevel.ts
index 83c9463..12c52ac 100644
--- a/base/schema-typescript/test/inputs/schema/enum-large.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/enum-large.schema/default/TopLevel.ts
@@ -102,15 +102,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/enum-with-null.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/enum-with-null.schema/default/TopLevel.ts
index 709a0a3..faf205e 100644
--- a/base/schema-typescript/test/inputs/schema/enum-with-null.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/enum-with-null.schema/default/TopLevel.ts
@@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/enum-with-values.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/enum-with-values.schema/default/TopLevel.ts
index 22fd2b0..0d0c447 100644
--- a/base/schema-typescript/test/inputs/schema/enum-with-values.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/enum-with-values.schema/default/TopLevel.ts
@@ -99,15 +99,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/enum.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/enum.schema/default/TopLevel.ts
index b34efc4..368ac2b 100644
--- a/base/schema-typescript/test/inputs/schema/enum.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/enum.schema/default/TopLevel.ts
@@ -109,15 +109,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/fractional-bounds.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/fractional-bounds.schema/default/TopLevel.ts
index a84cee1..8ea70f3 100644
--- a/base/schema-typescript/test/inputs/schema/fractional-bounds.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/fractional-bounds.schema/default/TopLevel.ts
@@ -97,15 +97,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/go-schema-pattern-properties.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/go-schema-pattern-properties.schema/default/TopLevel.ts
index 40aa1a4..fc206e1 100644
--- a/base/schema-typescript/test/inputs/schema/go-schema-pattern-properties.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/go-schema-pattern-properties.schema/default/TopLevel.ts
@@ -97,15 +97,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/haskell-enum-forbidden.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/haskell-enum-forbidden.schema/default/TopLevel.ts
index 6fc80a6..e07edf0 100644
--- a/base/schema-typescript/test/inputs/schema/haskell-enum-forbidden.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/haskell-enum-forbidden.schema/default/TopLevel.ts
@@ -99,15 +99,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/id-no-address.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/id-no-address.schema/default/TopLevel.ts
index f3e2150..29bc994 100644
--- a/base/schema-typescript/test/inputs/schema/id-no-address.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/id-no-address.schema/default/TopLevel.ts
@@ -97,15 +97,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/id-root.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/id-root.schema/default/TopLevel.ts
index a54e3cc..444933f 100644
--- a/base/schema-typescript/test/inputs/schema/id-root.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/id-root.schema/default/TopLevel.ts
@@ -97,15 +97,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/ie-suffix-singularization.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/ie-suffix-singularization.schema/default/TopLevel.ts
index 396acb2..9d2df90 100644
--- a/base/schema-typescript/test/inputs/schema/ie-suffix-singularization.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/ie-suffix-singularization.schema/default/TopLevel.ts
@@ -103,15 +103,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/implicit-all-of.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/implicit-all-of.schema/default/TopLevel.ts
index c0acf5e..9f7b670 100644
--- a/base/schema-typescript/test/inputs/schema/implicit-all-of.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/implicit-all-of.schema/default/TopLevel.ts
@@ -99,15 +99,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/implicit-class-array-union.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/implicit-class-array-union.schema/default/TopLevel.ts
index 4a146d2..887b34d 100644
--- a/base/schema-typescript/test/inputs/schema/implicit-class-array-union.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/implicit-class-array-union.schema/default/TopLevel.ts
@@ -104,15 +104,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/implicit-one-of.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/implicit-one-of.schema/default/TopLevel.ts
index 74a3442..8345516 100644
--- a/base/schema-typescript/test/inputs/schema/implicit-one-of.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/implicit-one-of.schema/default/TopLevel.ts
@@ -99,15 +99,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/integer-before-number.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/integer-before-number.schema/default/TopLevel.ts
index cae4ec8..6e4d1cf 100644
--- a/base/schema-typescript/test/inputs/schema/integer-before-number.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/integer-before-number.schema/default/TopLevel.ts
@@ -97,15 +97,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/integer-float-union.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/integer-float-union.schema/default/TopLevel.ts
index 8cec423..30bbefd 100644
--- a/base/schema-typescript/test/inputs/schema/integer-float-union.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/integer-float-union.schema/default/TopLevel.ts
@@ -97,15 +97,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/integer-string.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/integer-string.schema/default/TopLevel.ts
index 71adc70..f9a36b5 100644
--- a/base/schema-typescript/test/inputs/schema/integer-string.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/integer-string.schema/default/TopLevel.ts
@@ -105,15 +105,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/integer-type.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/integer-type.schema/default/TopLevel.ts
index 0bab211..54caffa 100644
--- a/base/schema-typescript/test/inputs/schema/integer-type.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/integer-type.schema/default/TopLevel.ts
@@ -105,15 +105,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/intersection-nested.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/intersection-nested.schema/default/TopLevel.ts
index 2315801..2d9a3b2 100644
--- a/base/schema-typescript/test/inputs/schema/intersection-nested.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/intersection-nested.schema/default/TopLevel.ts
@@ -96,15 +96,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/intersection.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/intersection.schema/default/TopLevel.ts
index 0855871..29a519e 100644
--- a/base/schema-typescript/test/inputs/schema/intersection.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/intersection.schema/default/TopLevel.ts
@@ -102,15 +102,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/issue2680-top-level-array.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/issue2680-top-level-array.schema/default/TopLevel.ts
index 1b8258a..9f9b3d6 100644
--- a/base/schema-typescript/test/inputs/schema/issue2680-top-level-array.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/issue2680-top-level-array.schema/default/TopLevel.ts
@@ -94,15 +94,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/keyword-enum.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/keyword-enum.schema/default/TopLevel.ts
index 86fd73e..e90b8c1 100644
--- a/base/schema-typescript/test/inputs/schema/keyword-enum.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/keyword-enum.schema/default/TopLevel.ts
@@ -99,15 +99,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/keyword-unions.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/keyword-unions.schema/default/TopLevel.ts
index 0d15c07..95fb785 100644
--- a/base/schema-typescript/test/inputs/schema/keyword-unions.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/keyword-unions.schema/default/TopLevel.ts
@@ -1093,15 +1093,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/light.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/light.schema/default/TopLevel.ts
index 20badb6..a84e1b1 100644
--- a/base/schema-typescript/test/inputs/schema/light.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/light.schema/default/TopLevel.ts
@@ -102,15 +102,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/list.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/list.schema/default/TopLevel.ts
index 15a1a97..a3e9b2b 100644
--- a/base/schema-typescript/test/inputs/schema/list.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/list.schema/default/TopLevel.ts
@@ -100,15 +100,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/min-max-items.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/min-max-items.schema/default/TopLevel.ts
index 28850db..a88d16b 100644
--- a/base/schema-typescript/test/inputs/schema/min-max-items.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/min-max-items.schema/default/TopLevel.ts
@@ -103,15 +103,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/minmax-integer.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/minmax-integer.schema/default/TopLevel.ts
index 34a7b7d..4d15bf4 100644
--- a/base/schema-typescript/test/inputs/schema/minmax-integer.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/minmax-integer.schema/default/TopLevel.ts
@@ -104,15 +104,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/minmax.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/minmax.schema/default/TopLevel.ts
index 31081e8..74eb204 100644
--- a/base/schema-typescript/test/inputs/schema/minmax.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/minmax.schema/default/TopLevel.ts
@@ -104,15 +104,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/minmaxlength.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/minmaxlength.schema/default/TopLevel.ts
index 853a3df..ce21e9c 100644
--- a/base/schema-typescript/test/inputs/schema/minmaxlength.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/minmaxlength.schema/default/TopLevel.ts
@@ -106,15 +106,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/multi-type-enum.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/multi-type-enum.schema/default/TopLevel.ts
index 0f1736f..2ac8eea 100644
--- a/base/schema-typescript/test/inputs/schema/multi-type-enum.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/multi-type-enum.schema/default/TopLevel.ts
@@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/mutually-recursive.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/mutually-recursive.schema/default/TopLevel.ts
index b5a9bdb..332f39c 100644
--- a/base/schema-typescript/test/inputs/schema/mutually-recursive.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/mutually-recursive.schema/default/TopLevel.ts
@@ -104,15 +104,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/nested-intersection-union.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/nested-intersection-union.schema/default/TopLevel.ts
index 9eac72a..8501247 100644
--- a/base/schema-typescript/test/inputs/schema/nested-intersection-union.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/nested-intersection-union.schema/default/TopLevel.ts
@@ -104,15 +104,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/non-standard-ref.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/non-standard-ref.schema/default/TopLevel.ts
index cbf267b..9dd48da 100644
--- a/base/schema-typescript/test/inputs/schema/non-standard-ref.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/non-standard-ref.schema/default/TopLevel.ts
@@ -99,15 +99,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/nullable-optional-one-of.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/nullable-optional-one-of.schema/default/TopLevel.ts
index ff2699b..d59ca93 100644
--- a/base/schema-typescript/test/inputs/schema/nullable-optional-one-of.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/nullable-optional-one-of.schema/default/TopLevel.ts
@@ -100,15 +100,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/object-type-required.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/object-type-required.schema/default/TopLevel.ts
index ebc463e..8a93edc 100644
--- a/base/schema-typescript/test/inputs/schema/object-type-required.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/object-type-required.schema/default/TopLevel.ts
@@ -99,15 +99,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/optional-any.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/optional-any.schema/default/TopLevel.ts
index 23c0a31..21f335b 100644
--- a/base/schema-typescript/test/inputs/schema/optional-any.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/optional-any.schema/default/TopLevel.ts
@@ -97,15 +97,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/optional-const-ref.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/optional-const-ref.schema/default/TopLevel.ts
index fe9a86d..1d6ca31 100644
--- a/base/schema-typescript/test/inputs/schema/optional-const-ref.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/optional-const-ref.schema/default/TopLevel.ts
@@ -107,15 +107,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/optional-constraints.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/optional-constraints.schema/default/TopLevel.ts
index 1b1f372..8cf1679 100644
--- a/base/schema-typescript/test/inputs/schema/optional-constraints.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/optional-constraints.schema/default/TopLevel.ts
@@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/optional-date-time.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/optional-date-time.schema/default/TopLevel.ts
index cf2b99f..c6d057f 100644
--- a/base/schema-typescript/test/inputs/schema/optional-date-time.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/optional-date-time.schema/default/TopLevel.ts
@@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/optional-enum.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/optional-enum.schema/default/TopLevel.ts
index a200d82..0f2ad1e 100644
--- a/base/schema-typescript/test/inputs/schema/optional-enum.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/optional-enum.schema/default/TopLevel.ts
@@ -99,15 +99,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/optional-property.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/optional-property.schema/default/TopLevel.ts
index 5b763bd..5d84647 100644
--- a/base/schema-typescript/test/inputs/schema/optional-property.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/optional-property.schema/default/TopLevel.ts
@@ -96,15 +96,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/pattern.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/pattern.schema/default/TopLevel.ts
index 8b14521..f596bff 100644
--- a/base/schema-typescript/test/inputs/schema/pattern.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/pattern.schema/default/TopLevel.ts
@@ -104,15 +104,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/postman-collection.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/postman-collection.schema/default/TopLevel.ts
index 9e875b1..34dfb4e 100644
--- a/base/schema-typescript/test/inputs/schema/postman-collection.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/postman-collection.schema/default/TopLevel.ts
@@ -107,15 +107,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/prefix-items.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/prefix-items.schema/default/TopLevel.ts
index db56f7c..ee2e5bf 100644
--- a/base/schema-typescript/test/inputs/schema/prefix-items.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/prefix-items.schema/default/TopLevel.ts
@@ -100,15 +100,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/recursive-union-flattening.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/recursive-union-flattening.schema/default/TopLevel.ts
index e6cc499..3fc7608 100644
--- a/base/schema-typescript/test/inputs/schema/recursive-union-flattening.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/recursive-union-flattening.schema/default/TopLevel.ts
@@ -110,15 +110,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/ref-id-files.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/ref-id-files.schema/default/TopLevel.ts
index e3e13d6..4b340a1 100644
--- a/base/schema-typescript/test/inputs/schema/ref-id-files.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/ref-id-files.schema/default/TopLevel.ts
@@ -97,15 +97,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/ref-remote.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/ref-remote.schema/default/TopLevel.ts
index 15a1a97..a3e9b2b 100644
--- a/base/schema-typescript/test/inputs/schema/ref-remote.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/ref-remote.schema/default/TopLevel.ts
@@ -100,15 +100,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/renaming-bug.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/renaming-bug.schema/default/TopLevel.ts
index adc564c..f2841a1 100644
--- a/base/schema-typescript/test/inputs/schema/renaming-bug.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/renaming-bug.schema/default/TopLevel.ts
@@ -184,15 +184,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/required-draft3.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/required-draft3.schema/default/TopLevel.ts
index d212362..5d752aa 100644
--- a/base/schema-typescript/test/inputs/schema/required-draft3.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/required-draft3.schema/default/TopLevel.ts
@@ -97,15 +97,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/required-non-properties.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/required-non-properties.schema/default/TopLevel.ts
index cf8a7e8..b5a3f4a 100644
--- a/base/schema-typescript/test/inputs/schema/required-non-properties.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/required-non-properties.schema/default/TopLevel.ts
@@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/required.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/required.schema/default/TopLevel.ts
index d212362..5d752aa 100644
--- a/base/schema-typescript/test/inputs/schema/required.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/required.schema/default/TopLevel.ts
@@ -97,15 +97,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/rust-cycle-breaker-union.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/rust-cycle-breaker-union.schema/default/TopLevel.ts
index d136451..b76a76b 100644
--- a/base/schema-typescript/test/inputs/schema/rust-cycle-breaker-union.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/rust-cycle-breaker-union.schema/default/TopLevel.ts
@@ -106,15 +106,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/schema-constraints.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/schema-constraints.schema/default/TopLevel.ts
index b77470d..80dbe26 100644
--- a/base/schema-typescript/test/inputs/schema/schema-constraints.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/schema-constraints.schema/default/TopLevel.ts
@@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/simple-ref.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/simple-ref.schema/default/TopLevel.ts
index 15a1a97..a3e9b2b 100644
--- a/base/schema-typescript/test/inputs/schema/simple-ref.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/simple-ref.schema/default/TopLevel.ts
@@ -100,15 +100,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/strict-optional.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/strict-optional.schema/default/TopLevel.ts
index eabc0a6..208356c 100644
--- a/base/schema-typescript/test/inputs/schema/strict-optional.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/strict-optional.schema/default/TopLevel.ts
@@ -97,15 +97,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/top-level-array.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/top-level-array.schema/default/TopLevel.ts
index 40e213a..bfa6424 100644
--- a/base/schema-typescript/test/inputs/schema/top-level-array.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/top-level-array.schema/default/TopLevel.ts
@@ -100,15 +100,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/top-level-enum.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/top-level-enum.schema/default/TopLevel.ts
index 67a4122..26d77b6 100644
--- a/base/schema-typescript/test/inputs/schema/top-level-enum.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/top-level-enum.schema/default/TopLevel.ts
@@ -94,15 +94,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/top-level-primitive-array.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/top-level-primitive-array.schema/default/TopLevel.ts
index 023d6c9..eb865a8 100644
--- a/base/schema-typescript/test/inputs/schema/top-level-primitive-array.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/top-level-primitive-array.schema/default/TopLevel.ts
@@ -94,15 +94,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/top-level-primitive.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/top-level-primitive.schema/default/TopLevel.ts
index 6e55a5e..e37cbbe 100644
--- a/base/schema-typescript/test/inputs/schema/top-level-primitive.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/top-level-primitive.schema/default/TopLevel.ts
@@ -97,15 +97,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/tuple.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/tuple.schema/default/TopLevel.ts
index db5ddd1..d90f7f5 100644
--- a/base/schema-typescript/test/inputs/schema/tuple.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/tuple.schema/default/TopLevel.ts
@@ -99,15 +99,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/unevaluated-properties.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/unevaluated-properties.schema/default/TopLevel.ts
index 80225c2..90b3f3e 100644
--- a/base/schema-typescript/test/inputs/schema/unevaluated-properties.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/unevaluated-properties.schema/default/TopLevel.ts
@@ -112,15 +112,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/unicode-codepoint-length.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/unicode-codepoint-length.schema/default/TopLevel.ts
index 1192f9e..3da4931 100644
--- a/base/schema-typescript/test/inputs/schema/unicode-codepoint-length.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/unicode-codepoint-length.schema/default/TopLevel.ts
@@ -99,15 +99,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/union-int-double.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/union-int-double.schema/default/TopLevel.ts
index b1d5b0c..bcd40b1 100644
--- a/base/schema-typescript/test/inputs/schema/union-int-double.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/union-int-double.schema/default/TopLevel.ts
@@ -99,15 +99,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/union-list.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/union-list.schema/default/TopLevel.ts
index d42710e..3cfb51f 100644
--- a/base/schema-typescript/test/inputs/schema/union-list.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/union-list.schema/default/TopLevel.ts
@@ -102,15 +102,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/union.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/union.schema/default/TopLevel.ts
index 3188d2a..1ba82fe 100644
--- a/base/schema-typescript/test/inputs/schema/union.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/union.schema/default/TopLevel.ts
@@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/uuid.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/uuid.schema/default/TopLevel.ts
index 309108d..052065c 100644
--- a/base/schema-typescript/test/inputs/schema/uuid.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/uuid.schema/default/TopLevel.ts
@@ -106,15 +106,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript/test/inputs/schema/vega-lite.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/vega-lite.schema/default/TopLevel.ts
index 7363378..0ada8e0 100644
--- a/base/schema-typescript/test/inputs/schema/vega-lite.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/vega-lite.schema/default/TopLevel.ts
@@ -5945,15 +5945,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/schema-typescript-effect-schema/test/inputs/schema/date-time-or-string.schema/default/TopLevel.ts b/head/schema-typescript-effect-schema/test/inputs/schema/date-time-or-string.schema/default/TopLevel.ts
index 8ae6d88..43a65fc 100644
--- a/base/schema-typescript-effect-schema/test/inputs/schema/date-time-or-string.schema/default/TopLevel.ts
+++ b/head/schema-typescript-effect-schema/test/inputs/schema/date-time-or-string.schema/default/TopLevel.ts
@@ -7,6 +7,6 @@ export const BarEnum = S.Literal(
 export type BarEnum = S.Schema.Type<typeof BarEnum>;
 
 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
-    "bar": S.Union(S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), BarEnum),
+    "bar": S.Union(S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))), BarEnum),
     "foo": S.String,
 }) {}
diff --git a/base/schema-typescript-effect-schema/test/inputs/schema/date-time.schema/default/TopLevel.ts b/head/schema-typescript-effect-schema/test/inputs/schema/date-time.schema/default/TopLevel.ts
index c0de558..a66a726 100644
--- a/base/schema-typescript-effect-schema/test/inputs/schema/date-time.schema/default/TopLevel.ts
+++ b/head/schema-typescript-effect-schema/test/inputs/schema/date-time.schema/default/TopLevel.ts
@@ -8,9 +8,9 @@ export const ComplexUnionArrayEnum = S.Literal(
 export type ComplexUnionArrayEnum = S.Schema.Type<typeof ComplexUnionArrayEnum>;
 
 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
-    "complex-union-array": S.Array(S.Union(S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), ComplexUnionArrayEnum, S.Int)),
-    "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
-    "date-time": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
-    "time": S.String.pipe(S.pattern(/^\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
-    "union-array": S.Array(S.Union(S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)), S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), S.String.pipe(S.pattern(/^\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)))),
+    "complex-union-array": S.Array(S.Union(S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))), ComplexUnionArrayEnum, S.Int)),
+    "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
+    "date-time": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
+    "time": S.String.pipe(S.pattern(/^(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i)),
+    "union-array": S.Array(S.Union(S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)), S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))), S.String.pipe(S.pattern(/^(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i)))),
 }) {}
diff --git a/base/schema-typescript-effect-schema/test/inputs/schema/optional-date-time.schema/default/TopLevel.ts b/head/schema-typescript-effect-schema/test/inputs/schema/optional-date-time.schema/default/TopLevel.ts
index fa0c9a1..2952190 100644
--- a/base/schema-typescript-effect-schema/test/inputs/schema/optional-date-time.schema/default/TopLevel.ts
+++ b/head/schema-typescript-effect-schema/test/inputs/schema/optional-date-time.schema/default/TopLevel.ts
@@ -2,10 +2,10 @@ import * as S from "effect/Schema";
 
 
 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
-    "optional-date": S.optional(S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/))),
-    "optional-date-time": S.optional(S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/))),
-    "optional-time": S.optional(S.String.pipe(S.pattern(/^\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/))),
-    "required-date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
-    "required-date-time": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
-    "required-time": S.String.pipe(S.pattern(/^\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "optional-date": S.optional(S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value))),
+    "optional-date-time": S.optional(S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)))),
+    "optional-time": S.optional(S.String.pipe(S.pattern(/^(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i))),
+    "required-date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
+    "required-date-time": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
+    "required-time": S.String.pipe(S.pattern(/^(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i)),
 }) {}
diff --git a/base/typescript/test/inputs/json/misc/00c36.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/00c36.json/default/TopLevel.ts
index c0be327..a983213 100644
--- a/base/typescript/test/inputs/json/misc/00c36.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/00c36.json/default/TopLevel.ts
@@ -120,15 +120,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/00ec5.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/00ec5.json/default/TopLevel.ts
index 421686c..5ec761b 100644
--- a/base/typescript/test/inputs/json/misc/00ec5.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/00ec5.json/default/TopLevel.ts
@@ -162,15 +162,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/010b1.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/010b1.json/default/TopLevel.ts
index 0ee4776..d624211 100644
--- a/base/typescript/test/inputs/json/misc/010b1.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/010b1.json/default/TopLevel.ts
@@ -105,15 +105,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/016af.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/016af.json/default/TopLevel.ts
index 5b9061d..824027c 100644
--- a/base/typescript/test/inputs/json/misc/016af.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/016af.json/default/TopLevel.ts
@@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/033b1.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/033b1.json/default/TopLevel.ts
index 1d42134..51c34f0 100644
--- a/base/typescript/test/inputs/json/misc/033b1.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/033b1.json/default/TopLevel.ts
@@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/050b0.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/050b0.json/default/TopLevel.ts
index d95e012..16de21f 100644
--- a/base/typescript/test/inputs/json/misc/050b0.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/050b0.json/default/TopLevel.ts
@@ -136,15 +136,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/06bee.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/06bee.json/default/TopLevel.ts
index 7410888..5bb27b2 100644
--- a/base/typescript/test/inputs/json/misc/06bee.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/06bee.json/default/TopLevel.ts
@@ -131,15 +131,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/07540.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/07540.json/default/TopLevel.ts
index 746438b..6e06286 100644
--- a/base/typescript/test/inputs/json/misc/07540.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/07540.json/default/TopLevel.ts
@@ -96,15 +96,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/0779f.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/0779f.json/default/TopLevel.ts
index ae17f49..05276b1 100644
--- a/base/typescript/test/inputs/json/misc/0779f.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/0779f.json/default/TopLevel.ts
@@ -129,15 +129,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/07c75.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/07c75.json/default/TopLevel.ts
index ba5660a..943765c 100644
--- a/base/typescript/test/inputs/json/misc/07c75.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/07c75.json/default/TopLevel.ts
@@ -121,15 +121,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/09f54.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/09f54.json/default/TopLevel.ts
index cda1ee3..38eedf1 100644
--- a/base/typescript/test/inputs/json/misc/09f54.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/09f54.json/default/TopLevel.ts
@@ -109,15 +109,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/0a358.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/0a358.json/default/TopLevel.ts
index 98e3552..4cb922c 100644
--- a/base/typescript/test/inputs/json/misc/0a358.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/0a358.json/default/TopLevel.ts
@@ -111,15 +111,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/0a91a.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/0a91a.json/default/TopLevel.ts
index 797f335..22b91e1 100644
--- a/base/typescript/test/inputs/json/misc/0a91a.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/0a91a.json/default/TopLevel.ts
@@ -311,15 +311,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/0b91a.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/0b91a.json/default/TopLevel.ts
index 01bf393..507c416 100644
--- a/base/typescript/test/inputs/json/misc/0b91a.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/0b91a.json/default/TopLevel.ts
@@ -136,15 +136,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/0cffa.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/0cffa.json/default/TopLevel.ts
index f7add0c..49be2bd 100644
--- a/base/typescript/test/inputs/json/misc/0cffa.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/0cffa.json/default/TopLevel.ts
@@ -204,15 +204,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/0e0c2.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/0e0c2.json/default/TopLevel.ts
index 13b43ac..7ad0a89 100644
--- a/base/typescript/test/inputs/json/misc/0e0c2.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/0e0c2.json/default/TopLevel.ts
@@ -167,15 +167,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/0fecf.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/0fecf.json/default/TopLevel.ts
index 6c50364..fc2446d 100644
--- a/base/typescript/test/inputs/json/misc/0fecf.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/0fecf.json/default/TopLevel.ts
@@ -96,15 +96,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/10be4.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/10be4.json/default/TopLevel.ts
index 2cdcbb5..40b751e 100644
--- a/base/typescript/test/inputs/json/misc/10be4.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/10be4.json/default/TopLevel.ts
@@ -136,15 +136,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/112b5.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/112b5.json/default/TopLevel.ts
index 9092f25..9a20499 100644
--- a/base/typescript/test/inputs/json/misc/112b5.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/112b5.json/default/TopLevel.ts
@@ -106,15 +106,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/127a1.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/127a1.json/default/TopLevel.ts
index e3eb481..649aa7f 100644
--- a/base/typescript/test/inputs/json/misc/127a1.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/127a1.json/default/TopLevel.ts
@@ -204,15 +204,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/13d8d.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/13d8d.json/default/TopLevel.ts
index cab0dd8..493d608 100644
--- a/base/typescript/test/inputs/json/misc/13d8d.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/13d8d.json/default/TopLevel.ts
@@ -122,15 +122,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/14d38.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/14d38.json/default/TopLevel.ts
index 1fe559b..4325fc0 100644
--- a/base/typescript/test/inputs/json/misc/14d38.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/14d38.json/default/TopLevel.ts
@@ -103,15 +103,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/167d6.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/167d6.json/default/TopLevel.ts
index 1d42134..51c34f0 100644
--- a/base/typescript/test/inputs/json/misc/167d6.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/167d6.json/default/TopLevel.ts
@@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/16bc5.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/16bc5.json/default/TopLevel.ts
index a751ea5..5e66d83 100644
--- a/base/typescript/test/inputs/json/misc/16bc5.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/16bc5.json/default/TopLevel.ts
@@ -194,15 +194,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/176f1.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/176f1.json/default/TopLevel.ts
index ab68e80..ecd58f0 100644
--- a/base/typescript/test/inputs/json/misc/176f1.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/176f1.json/default/TopLevel.ts
@@ -121,15 +121,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/1a7f5.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/1a7f5.json/default/TopLevel.ts
index 0ee4776..d624211 100644
--- a/base/typescript/test/inputs/json/misc/1a7f5.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/1a7f5.json/default/TopLevel.ts
@@ -105,15 +105,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/1b28c.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/1b28c.json/default/TopLevel.ts
index 5b9061d..824027c 100644
--- a/base/typescript/test/inputs/json/misc/1b28c.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/1b28c.json/default/TopLevel.ts
@@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/1b409.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/1b409.json/default/TopLevel.ts
index 57b4ca7..d0d2ad2 100644
--- a/base/typescript/test/inputs/json/misc/1b409.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/1b409.json/default/TopLevel.ts
@@ -170,15 +170,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/2465e.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/2465e.json/default/TopLevel.ts
index 24e1c91..4c9b561 100644
--- a/base/typescript/test/inputs/json/misc/2465e.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/2465e.json/default/TopLevel.ts
@@ -169,15 +169,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/24f52.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/24f52.json/default/TopLevel.ts
index ae17f49..05276b1 100644
--- a/base/typescript/test/inputs/json/misc/24f52.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/24f52.json/default/TopLevel.ts
@@ -129,15 +129,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/262f0.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/262f0.json/default/TopLevel.ts
index 2428c6b..2f6399a 100644
--- a/base/typescript/test/inputs/json/misc/262f0.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/262f0.json/default/TopLevel.ts
@@ -196,15 +196,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/26b49.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/26b49.json/default/TopLevel.ts
index 53647f9..154183a 100644
--- a/base/typescript/test/inputs/json/misc/26b49.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/26b49.json/default/TopLevel.ts
@@ -203,15 +203,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/26c9c.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/26c9c.json/default/TopLevel.ts
index be85af5..b55faf6 100644
--- a/base/typescript/test/inputs/json/misc/26c9c.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/26c9c.json/default/TopLevel.ts
@@ -283,15 +283,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/27332.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/27332.json/default/TopLevel.ts
index a2e5961..35fbe5d 100644
--- a/base/typescript/test/inputs/json/misc/27332.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/27332.json/default/TopLevel.ts
@@ -235,15 +235,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/29f47.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/29f47.json/default/TopLevel.ts
index 2257a86..c976ff4 100644
--- a/base/typescript/test/inputs/json/misc/29f47.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/29f47.json/default/TopLevel.ts
@@ -222,15 +222,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/2d4e2.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/2d4e2.json/default/TopLevel.ts
index 9362dcf..a7e2dd6 100644
--- a/base/typescript/test/inputs/json/misc/2d4e2.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/2d4e2.json/default/TopLevel.ts
@@ -180,15 +180,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/2df80.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/2df80.json/default/TopLevel.ts
index 37f6367..450439c 100644
--- a/base/typescript/test/inputs/json/misc/2df80.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/2df80.json/default/TopLevel.ts
@@ -125,15 +125,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/31189.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/31189.json/default/TopLevel.ts
index 792af9d..d4aaa45 100644
--- a/base/typescript/test/inputs/json/misc/31189.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/31189.json/default/TopLevel.ts
@@ -123,15 +123,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/32431.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/32431.json/default/TopLevel.ts
index 1054a51..d47172c 100644
--- a/base/typescript/test/inputs/json/misc/32431.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/32431.json/default/TopLevel.ts
@@ -159,15 +159,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/32d5c.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/32d5c.json/default/TopLevel.ts
index 543bff3..9774154 100644
--- a/base/typescript/test/inputs/json/misc/32d5c.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/32d5c.json/default/TopLevel.ts
@@ -105,15 +105,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/337ed.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/337ed.json/default/TopLevel.ts
index 2be12a7..bfe127f 100644
--- a/base/typescript/test/inputs/json/misc/337ed.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/337ed.json/default/TopLevel.ts
@@ -154,15 +154,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/33d2e.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/33d2e.json/default/TopLevel.ts
index 465863b..b2bf5c1 100644
--- a/base/typescript/test/inputs/json/misc/33d2e.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/33d2e.json/default/TopLevel.ts
@@ -137,15 +137,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/34702.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/34702.json/default/TopLevel.ts
index 642c4d3..695cfe1 100644
--- a/base/typescript/test/inputs/json/misc/34702.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/34702.json/default/TopLevel.ts
@@ -151,15 +151,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/3536b.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/3536b.json/default/TopLevel.ts
index a432e0b..dd27fff 100644
--- a/base/typescript/test/inputs/json/misc/3536b.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/3536b.json/default/TopLevel.ts
@@ -125,15 +125,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/3659d.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/3659d.json/default/TopLevel.ts
index 5b9061d..824027c 100644
--- a/base/typescript/test/inputs/json/misc/3659d.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/3659d.json/default/TopLevel.ts
@@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/36d5d.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/36d5d.json/default/TopLevel.ts
index ae17f49..05276b1 100644
--- a/base/typescript/test/inputs/json/misc/36d5d.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/36d5d.json/default/TopLevel.ts
@@ -129,15 +129,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/3a6b3.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/3a6b3.json/default/TopLevel.ts
index ae17f49..05276b1 100644
--- a/base/typescript/test/inputs/json/misc/3a6b3.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/3a6b3.json/default/TopLevel.ts
@@ -129,15 +129,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/3e9a3.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/3e9a3.json/default/TopLevel.ts
index ab68e80..ecd58f0 100644
--- a/base/typescript/test/inputs/json/misc/3e9a3.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/3e9a3.json/default/TopLevel.ts
@@ -121,15 +121,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/3f1ce.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/3f1ce.json/default/TopLevel.ts
index bdd006c..c8671c7 100644
--- a/base/typescript/test/inputs/json/misc/3f1ce.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/3f1ce.json/default/TopLevel.ts
@@ -196,15 +196,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/421d4.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/421d4.json/default/TopLevel.ts
index 3b9c792..81973fb 100644
--- a/base/typescript/test/inputs/json/misc/421d4.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/421d4.json/default/TopLevel.ts
@@ -207,15 +207,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/437e7.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/437e7.json/default/TopLevel.ts
index c5beadf..3093256 100644
--- a/base/typescript/test/inputs/json/misc/437e7.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/437e7.json/default/TopLevel.ts
@@ -200,15 +200,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/43970.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/43970.json/default/TopLevel.ts
index 29c4332..a719de8 100644
--- a/base/typescript/test/inputs/json/misc/43970.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/43970.json/default/TopLevel.ts
@@ -100,15 +100,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/43eaf.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/43eaf.json/default/TopLevel.ts
index 1d42134..51c34f0 100644
--- a/base/typescript/test/inputs/json/misc/43eaf.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/43eaf.json/default/TopLevel.ts
@@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/458db.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/458db.json/default/TopLevel.ts
index 499d44c..5f89b91 100644
--- a/base/typescript/test/inputs/json/misc/458db.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/458db.json/default/TopLevel.ts
@@ -137,15 +137,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/4961a.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/4961a.json/default/TopLevel.ts
index 5b9061d..824027c 100644
--- a/base/typescript/test/inputs/json/misc/4961a.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/4961a.json/default/TopLevel.ts
@@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/4a0d7.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/4a0d7.json/default/TopLevel.ts
index 5b9061d..824027c 100644
--- a/base/typescript/test/inputs/json/misc/4a0d7.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/4a0d7.json/default/TopLevel.ts
@@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/4a455.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/4a455.json/default/TopLevel.ts
index 534cfe2..563ca2d 100644
--- a/base/typescript/test/inputs/json/misc/4a455.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/4a455.json/default/TopLevel.ts
@@ -136,15 +136,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/4c547.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/4c547.json/default/TopLevel.ts
index a751ea5..5e66d83 100644
--- a/base/typescript/test/inputs/json/misc/4c547.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/4c547.json/default/TopLevel.ts
@@ -194,15 +194,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/4d6fb.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/4d6fb.json/default/TopLevel.ts
index 8fdea6a..f0215d0 100644
--- a/base/typescript/test/inputs/json/misc/4d6fb.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/4d6fb.json/default/TopLevel.ts
@@ -234,15 +234,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/4e336.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/4e336.json/default/TopLevel.ts
index 5b9061d..824027c 100644
--- a/base/typescript/test/inputs/json/misc/4e336.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/4e336.json/default/TopLevel.ts
@@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/54147.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/54147.json/default/TopLevel.ts
index 0e2da69..021ff27 100644
--- a/base/typescript/test/inputs/json/misc/54147.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/54147.json/default/TopLevel.ts
@@ -109,15 +109,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/54d32.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/54d32.json/default/TopLevel.ts
index 9b6e27e..38f7422 100644
--- a/base/typescript/test/inputs/json/misc/54d32.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/54d32.json/default/TopLevel.ts
@@ -113,15 +113,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/570ec.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/570ec.json/default/TopLevel.ts
index 12e46ad..4d6318e 100644
--- a/base/typescript/test/inputs/json/misc/570ec.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/570ec.json/default/TopLevel.ts
@@ -128,15 +128,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/5dd0d.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/5dd0d.json/default/TopLevel.ts
index ae17f49..05276b1 100644
--- a/base/typescript/test/inputs/json/misc/5dd0d.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/5dd0d.json/default/TopLevel.ts
@@ -129,15 +129,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/5eae5.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/5eae5.json/default/TopLevel.ts
index 9aea60a..1ec275a 100644
--- a/base/typescript/test/inputs/json/misc/5eae5.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/5eae5.json/default/TopLevel.ts
@@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/5eb20.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/5eb20.json/default/TopLevel.ts
index ae17f49..05276b1 100644
--- a/base/typescript/test/inputs/json/misc/5eb20.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/5eb20.json/default/TopLevel.ts
@@ -129,15 +129,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/5f3a1.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/5f3a1.json/default/TopLevel.ts
index 1d42134..51c34f0 100644
--- a/base/typescript/test/inputs/json/misc/5f3a1.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/5f3a1.json/default/TopLevel.ts
@@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/5f7fe.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/5f7fe.json/default/TopLevel.ts
index f923590..c0a3d03 100644
--- a/base/typescript/test/inputs/json/misc/5f7fe.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/5f7fe.json/default/TopLevel.ts
@@ -281,15 +281,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/617e8.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/617e8.json/default/TopLevel.ts
index 3d8b5d2..2c1281b 100644
--- a/base/typescript/test/inputs/json/misc/617e8.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/617e8.json/default/TopLevel.ts
@@ -280,15 +280,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/61b66.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/61b66.json/default/TopLevel.ts
index ae17f49..05276b1 100644
--- a/base/typescript/test/inputs/json/misc/61b66.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/61b66.json/default/TopLevel.ts
@@ -129,15 +129,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/6260a.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/6260a.json/default/TopLevel.ts
index 1d42134..51c34f0 100644
--- a/base/typescript/test/inputs/json/misc/6260a.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/6260a.json/default/TopLevel.ts
@@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/65dec.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/65dec.json/default/TopLevel.ts
index c2e19ac..9324220 100644
--- a/base/typescript/test/inputs/json/misc/65dec.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/65dec.json/default/TopLevel.ts
@@ -159,15 +159,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/66121.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/66121.json/default/TopLevel.ts
index 64f8c5e..9830cd5 100644
--- a/base/typescript/test/inputs/json/misc/66121.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/66121.json/default/TopLevel.ts
@@ -131,15 +131,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/6617c.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/6617c.json/default/TopLevel.ts
index 188c749..01ea72d 100644
--- a/base/typescript/test/inputs/json/misc/6617c.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/6617c.json/default/TopLevel.ts
@@ -103,15 +103,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/67c03.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/67c03.json/default/TopLevel.ts
index f2f5e7e..078e091 100644
--- a/base/typescript/test/inputs/json/misc/67c03.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/67c03.json/default/TopLevel.ts
@@ -103,15 +103,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/68c30.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/68c30.json/default/TopLevel.ts
index ff629c9..821bced 100644
--- a/base/typescript/test/inputs/json/misc/68c30.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/68c30.json/default/TopLevel.ts
@@ -127,15 +127,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/6c155.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/6c155.json/default/TopLevel.ts
index d65d0cb..fb256a3 100644
--- a/base/typescript/test/inputs/json/misc/6c155.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/6c155.json/default/TopLevel.ts
@@ -149,15 +149,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/6de06.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/6de06.json/default/TopLevel.ts
index 6163083..d66b8fa 100644
--- a/base/typescript/test/inputs/json/misc/6de06.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/6de06.json/default/TopLevel.ts
@@ -239,15 +239,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/6dec6.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/6dec6.json/default/TopLevel.ts
index e5fa6c8..6e2745b 100644
--- a/base/typescript/test/inputs/json/misc/6dec6.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/6dec6.json/default/TopLevel.ts
@@ -196,15 +196,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/6eb00.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/6eb00.json/default/TopLevel.ts
index b6cb20d..63835a1 100644
--- a/base/typescript/test/inputs/json/misc/6eb00.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/6eb00.json/default/TopLevel.ts
@@ -100,15 +100,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/70c77.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/70c77.json/default/TopLevel.ts
index 1d42134..51c34f0 100644
--- a/base/typescript/test/inputs/json/misc/70c77.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/70c77.json/default/TopLevel.ts
@@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/734ad.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/734ad.json/default/TopLevel.ts
index 2757040..7f98792 100644
--- a/base/typescript/test/inputs/json/misc/734ad.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/734ad.json/default/TopLevel.ts
@@ -165,15 +165,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/75912.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/75912.json/default/TopLevel.ts
index 1d42134..51c34f0 100644
--- a/base/typescript/test/inputs/json/misc/75912.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/75912.json/default/TopLevel.ts
@@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/7681c.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/7681c.json/default/TopLevel.ts
index e637d17..2c8c3d5 100644
--- a/base/typescript/test/inputs/json/misc/7681c.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/7681c.json/default/TopLevel.ts
@@ -204,15 +204,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/76ae1.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/76ae1.json/default/TopLevel.ts
index a3f9211..1ff30e6 100644
--- a/base/typescript/test/inputs/json/misc/76ae1.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/76ae1.json/default/TopLevel.ts
@@ -277,15 +277,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/77392.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/77392.json/default/TopLevel.ts
index 208c448..bd1d90f 100644
--- a/base/typescript/test/inputs/json/misc/77392.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/77392.json/default/TopLevel.ts
@@ -111,15 +111,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/7d397.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/7d397.json/default/TopLevel.ts
index 4c74c1e..cca1a7e 100644
--- a/base/typescript/test/inputs/json/misc/7d397.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/7d397.json/default/TopLevel.ts
@@ -169,15 +169,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/7d722.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/7d722.json/default/TopLevel.ts
index ae17f49..05276b1 100644
--- a/base/typescript/test/inputs/json/misc/7d722.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/7d722.json/default/TopLevel.ts
@@ -129,15 +129,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/7df41.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/7df41.json/default/TopLevel.ts
index 7743b06..8bb0df8 100644
--- a/base/typescript/test/inputs/json/misc/7df41.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/7df41.json/default/TopLevel.ts
@@ -106,15 +106,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/7dfa6.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/7dfa6.json/default/TopLevel.ts
index 5b9061d..824027c 100644
--- a/base/typescript/test/inputs/json/misc/7dfa6.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/7dfa6.json/default/TopLevel.ts
@@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/7eb30.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/7eb30.json/default/TopLevel.ts
index b26ed53..a522f6b 100644
--- a/base/typescript/test/inputs/json/misc/7eb30.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/7eb30.json/default/TopLevel.ts
@@ -133,15 +133,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/7f568.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/7f568.json/default/TopLevel.ts
index 47c08f8..908a330 100644
--- a/base/typescript/test/inputs/json/misc/7f568.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/7f568.json/default/TopLevel.ts
@@ -125,15 +125,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/7fbfb.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/7fbfb.json/default/TopLevel.ts
index bd6cc04..6884826 100644
--- a/base/typescript/test/inputs/json/misc/7fbfb.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/7fbfb.json/default/TopLevel.ts
@@ -120,15 +120,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/80aff.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/80aff.json/default/TopLevel.ts
index 7d52a96..7393e16 100644
--- a/base/typescript/test/inputs/json/misc/80aff.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/80aff.json/default/TopLevel.ts
@@ -112,15 +112,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/82509.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/82509.json/default/TopLevel.ts
index 9313e0a..3b002b1 100644
--- a/base/typescript/test/inputs/json/misc/82509.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/82509.json/default/TopLevel.ts
@@ -96,15 +96,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/8592b.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/8592b.json/default/TopLevel.ts
index 72b3a58..b0907a4 100644
--- a/base/typescript/test/inputs/json/misc/8592b.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/8592b.json/default/TopLevel.ts
@@ -208,15 +208,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/88130.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/88130.json/default/TopLevel.ts
index a751ea5..5e66d83 100644
--- a/base/typescript/test/inputs/json/misc/88130.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/88130.json/default/TopLevel.ts
@@ -194,15 +194,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/8a62c.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/8a62c.json/default/TopLevel.ts
index 5b9061d..824027c 100644
--- a/base/typescript/test/inputs/json/misc/8a62c.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/8a62c.json/default/TopLevel.ts
@@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/908db.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/908db.json/default/TopLevel.ts
index eb8f1f4..071e0d8 100644
--- a/base/typescript/test/inputs/json/misc/908db.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/908db.json/default/TopLevel.ts
@@ -105,15 +105,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/9617f.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/9617f.json/default/TopLevel.ts
index 1d42134..51c34f0 100644
--- a/base/typescript/test/inputs/json/misc/9617f.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/9617f.json/default/TopLevel.ts
@@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/96f7c.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/96f7c.json/default/TopLevel.ts
index 6e03025..900a451 100644
--- a/base/typescript/test/inputs/json/misc/96f7c.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/96f7c.json/default/TopLevel.ts
@@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/9847b.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/9847b.json/default/TopLevel.ts
index 5fac106..b1f7df7 100644
--- a/base/typescript/test/inputs/json/misc/9847b.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/9847b.json/default/TopLevel.ts
@@ -99,15 +99,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/9929c.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/9929c.json/default/TopLevel.ts
index a751ea5..5e66d83 100644
--- a/base/typescript/test/inputs/json/misc/9929c.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/9929c.json/default/TopLevel.ts
@@ -194,15 +194,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/996bd.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/996bd.json/default/TopLevel.ts
index 86d9a5d..d940071 100644
--- a/base/typescript/test/inputs/json/misc/996bd.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/996bd.json/default/TopLevel.ts
@@ -129,15 +129,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/9a503.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/9a503.json/default/TopLevel.ts
index 55be439..a7ce96f 100644
--- a/base/typescript/test/inputs/json/misc/9a503.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/9a503.json/default/TopLevel.ts
@@ -123,15 +123,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/9ac3b.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/9ac3b.json/default/TopLevel.ts
index dd20a95..9f4c57f 100644
--- a/base/typescript/test/inputs/json/misc/9ac3b.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/9ac3b.json/default/TopLevel.ts
@@ -120,15 +120,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/9eed5.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/9eed5.json/default/TopLevel.ts
index e008698..f2587f8 100644
--- a/base/typescript/test/inputs/json/misc/9eed5.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/9eed5.json/default/TopLevel.ts
@@ -123,15 +123,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/a0496.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/a0496.json/default/TopLevel.ts
index 3fd58ff..b1b15e4 100644
--- a/base/typescript/test/inputs/json/misc/a0496.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/a0496.json/default/TopLevel.ts
@@ -114,15 +114,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/a1eca.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/a1eca.json/default/TopLevel.ts
index a751ea5..5e66d83 100644
--- a/base/typescript/test/inputs/json/misc/a1eca.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/a1eca.json/default/TopLevel.ts
@@ -194,15 +194,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/a3d8c.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/a3d8c.json/default/TopLevel.ts
index d5df3fa..e16a8f2 100644
--- a/base/typescript/test/inputs/json/misc/a3d8c.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/a3d8c.json/default/TopLevel.ts
@@ -206,15 +206,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/a45b0.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/a45b0.json/default/TopLevel.ts
index 0ee4776..d624211 100644
--- a/base/typescript/test/inputs/json/misc/a45b0.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/a45b0.json/default/TopLevel.ts
@@ -105,15 +105,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/a71df.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/a71df.json/default/TopLevel.ts
index ae17f49..05276b1 100644
--- a/base/typescript/test/inputs/json/misc/a71df.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/a71df.json/default/TopLevel.ts
@@ -129,15 +129,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/a9691.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/a9691.json/default/TopLevel.ts
index 1d42134..51c34f0 100644
--- a/base/typescript/test/inputs/json/misc/a9691.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/a9691.json/default/TopLevel.ts
@@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/ab0d1.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/ab0d1.json/default/TopLevel.ts
index 0ee4776..d624211 100644
--- a/base/typescript/test/inputs/json/misc/ab0d1.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/ab0d1.json/default/TopLevel.ts
@@ -105,15 +105,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/abb4b.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/abb4b.json/default/TopLevel.ts
index 5b9061d..824027c 100644
--- a/base/typescript/test/inputs/json/misc/abb4b.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/abb4b.json/default/TopLevel.ts
@@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/ac944.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/ac944.json/default/TopLevel.ts
index 1d42134..51c34f0 100644
--- a/base/typescript/test/inputs/json/misc/ac944.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/ac944.json/default/TopLevel.ts
@@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/ad8be.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/ad8be.json/default/TopLevel.ts
index 2cdcbb5..40b751e 100644
--- a/base/typescript/test/inputs/json/misc/ad8be.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/ad8be.json/default/TopLevel.ts
@@ -136,15 +136,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/ae7f0.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/ae7f0.json/default/TopLevel.ts
index 1319e98..faecb0c 100644
--- a/base/typescript/test/inputs/json/misc/ae7f0.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/ae7f0.json/default/TopLevel.ts
@@ -184,15 +184,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/ae9ca.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/ae9ca.json/default/TopLevel.ts
index 720be74..697ca29 100644
--- a/base/typescript/test/inputs/json/misc/ae9ca.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/ae9ca.json/default/TopLevel.ts
@@ -132,15 +132,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/af2d1.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/af2d1.json/default/TopLevel.ts
index aab488f..9bb1083 100644
--- a/base/typescript/test/inputs/json/misc/af2d1.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/af2d1.json/default/TopLevel.ts
@@ -182,15 +182,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/b4865.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/b4865.json/default/TopLevel.ts
index 524a73b..62b85c8 100644
--- a/base/typescript/test/inputs/json/misc/b4865.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/b4865.json/default/TopLevel.ts
@@ -120,15 +120,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/b6f2c.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/b6f2c.json/default/TopLevel.ts
index 5b9061d..824027c 100644
--- a/base/typescript/test/inputs/json/misc/b6f2c.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/b6f2c.json/default/TopLevel.ts
@@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/b6fe5.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/b6fe5.json/default/TopLevel.ts
index a4169ac..cc93842 100644
--- a/base/typescript/test/inputs/json/misc/b6fe5.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/b6fe5.json/default/TopLevel.ts
@@ -99,15 +99,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/b9f64.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/b9f64.json/default/TopLevel.ts
index fe6c76b..bff8ceb 100644
--- a/base/typescript/test/inputs/json/misc/b9f64.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/b9f64.json/default/TopLevel.ts
@@ -96,15 +96,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/bb1ec.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/bb1ec.json/default/TopLevel.ts
index 5b9061d..824027c 100644
--- a/base/typescript/test/inputs/json/misc/bb1ec.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/bb1ec.json/default/TopLevel.ts
@@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/be234.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/be234.json/default/TopLevel.ts
index aaadde5..62b7427 100644
--- a/base/typescript/test/inputs/json/misc/be234.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/be234.json/default/TopLevel.ts
@@ -245,15 +245,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/c0356.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/c0356.json/default/TopLevel.ts
index 317ec0a..5489e4d 100644
--- a/base/typescript/test/inputs/json/misc/c0356.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/c0356.json/default/TopLevel.ts
@@ -108,15 +108,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/c0a3a.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/c0a3a.json/default/TopLevel.ts
index ae17f49..05276b1 100644
--- a/base/typescript/test/inputs/json/misc/c0a3a.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/c0a3a.json/default/TopLevel.ts
@@ -129,15 +129,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/c3303.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/c3303.json/default/TopLevel.ts
index 8f1f0a6..afcc259 100644
--- a/base/typescript/test/inputs/json/misc/c3303.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/c3303.json/default/TopLevel.ts
@@ -203,15 +203,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/c6cfd.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/c6cfd.json/default/TopLevel.ts
index 1f47392..766e801 100644
--- a/base/typescript/test/inputs/json/misc/c6cfd.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/c6cfd.json/default/TopLevel.ts
@@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/c8c7e.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/c8c7e.json/default/TopLevel.ts
index 632dc4c..6cc0632 100644
--- a/base/typescript/test/inputs/json/misc/c8c7e.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/c8c7e.json/default/TopLevel.ts
@@ -120,15 +120,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/cb0cc.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/cb0cc.json/default/TopLevel.ts
index 61d5577..185febd 100644
--- a/base/typescript/test/inputs/json/misc/cb0cc.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/cb0cc.json/default/TopLevel.ts
@@ -113,15 +113,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/cb81e.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/cb81e.json/default/TopLevel.ts
index 4987439..30b8696 100644
--- a/base/typescript/test/inputs/json/misc/cb81e.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/cb81e.json/default/TopLevel.ts
@@ -104,15 +104,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/ccd18.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/ccd18.json/default/TopLevel.ts
index ae17f49..05276b1 100644
--- a/base/typescript/test/inputs/json/misc/ccd18.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/ccd18.json/default/TopLevel.ts
@@ -129,15 +129,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/cd238.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/cd238.json/default/TopLevel.ts
index ae17f49..05276b1 100644
--- a/base/typescript/test/inputs/json/misc/cd238.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/cd238.json/default/TopLevel.ts
@@ -129,15 +129,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/cd463.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/cd463.json/default/TopLevel.ts
index 1d42134..51c34f0 100644
--- a/base/typescript/test/inputs/json/misc/cd463.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/cd463.json/default/TopLevel.ts
@@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/cda6c.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/cda6c.json/default/TopLevel.ts
index e624f4d..02abac0 100644
--- a/base/typescript/test/inputs/json/misc/cda6c.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/cda6c.json/default/TopLevel.ts
@@ -120,15 +120,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/cf0d8.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/cf0d8.json/default/TopLevel.ts
index a751ea5..5e66d83 100644
--- a/base/typescript/test/inputs/json/misc/cf0d8.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/cf0d8.json/default/TopLevel.ts
@@ -194,15 +194,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/cfbce.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/cfbce.json/default/TopLevel.ts
index 1d42134..51c34f0 100644
--- a/base/typescript/test/inputs/json/misc/cfbce.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/cfbce.json/default/TopLevel.ts
@@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/d0908.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/d0908.json/default/TopLevel.ts
index 5b9061d..824027c 100644
--- a/base/typescript/test/inputs/json/misc/d0908.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/d0908.json/default/TopLevel.ts
@@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/d23d5.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/d23d5.json/default/TopLevel.ts
index 1421fb3..20b6f90 100644
--- a/base/typescript/test/inputs/json/misc/d23d5.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/d23d5.json/default/TopLevel.ts
@@ -111,15 +111,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/dbfb3.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/dbfb3.json/default/TopLevel.ts
index 7894bff..b728093 100644
--- a/base/typescript/test/inputs/json/misc/dbfb3.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/dbfb3.json/default/TopLevel.ts
@@ -196,15 +196,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/dc44f.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/dc44f.json/default/TopLevel.ts
index 08c27f6..700fadf 100644
--- a/base/typescript/test/inputs/json/misc/dc44f.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/dc44f.json/default/TopLevel.ts
@@ -164,15 +164,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/dd1ce.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/dd1ce.json/default/TopLevel.ts
index 08c27f6..700fadf 100644
--- a/base/typescript/test/inputs/json/misc/dd1ce.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/dd1ce.json/default/TopLevel.ts
@@ -164,15 +164,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/dec3a.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/dec3a.json/default/TopLevel.ts
index ca3585a..1d071df 100644
--- a/base/typescript/test/inputs/json/misc/dec3a.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/dec3a.json/default/TopLevel.ts
@@ -157,15 +157,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/df957.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/df957.json/default/TopLevel.ts
index a751ea5..5e66d83 100644
--- a/base/typescript/test/inputs/json/misc/df957.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/df957.json/default/TopLevel.ts
@@ -194,15 +194,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/e0ac7.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/e0ac7.json/default/TopLevel.ts
index 6810d4c..5f4da6f 100644
--- a/base/typescript/test/inputs/json/misc/e0ac7.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/e0ac7.json/default/TopLevel.ts
@@ -202,15 +202,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/e2915.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/e2915.json/default/TopLevel.ts
index 4b2d275..e19dd6e 100644
--- a/base/typescript/test/inputs/json/misc/e2915.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/e2915.json/default/TopLevel.ts
@@ -196,15 +196,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/e2a58.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/e2a58.json/default/TopLevel.ts
index e2f0bc5..88ed88f 100644
--- a/base/typescript/test/inputs/json/misc/e2a58.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/e2a58.json/default/TopLevel.ts
@@ -99,15 +99,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/e324e.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/e324e.json/default/TopLevel.ts
index fb23bdf..b2a72cd 100644
--- a/base/typescript/test/inputs/json/misc/e324e.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/e324e.json/default/TopLevel.ts
@@ -167,15 +167,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/e53b5.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/e53b5.json/default/TopLevel.ts
index 3cfd531..0216fc7 100644
--- a/base/typescript/test/inputs/json/misc/e53b5.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/e53b5.json/default/TopLevel.ts
@@ -120,15 +120,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/e64a0.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/e64a0.json/default/TopLevel.ts
index 9092f25..9a20499 100644
--- a/base/typescript/test/inputs/json/misc/e64a0.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/e64a0.json/default/TopLevel.ts
@@ -106,15 +106,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/e8a0b.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/e8a0b.json/default/TopLevel.ts
index 0ee4776..d624211 100644
--- a/base/typescript/test/inputs/json/misc/e8a0b.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/e8a0b.json/default/TopLevel.ts
@@ -105,15 +105,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/e8b04.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/e8b04.json/default/TopLevel.ts
index dc12bfc..3bc4f02 100644
--- a/base/typescript/test/inputs/json/misc/e8b04.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/e8b04.json/default/TopLevel.ts
@@ -327,15 +327,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/ed095.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/ed095.json/default/TopLevel.ts
index 5f4b4ed..281babf 100644
--- a/base/typescript/test/inputs/json/misc/ed095.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/ed095.json/default/TopLevel.ts
@@ -94,15 +94,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/f22f5.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/f22f5.json/default/TopLevel.ts
index 4a47bfb..9c3cfa0 100644
--- a/base/typescript/test/inputs/json/misc/f22f5.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/f22f5.json/default/TopLevel.ts
@@ -182,15 +182,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/f3139.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/f3139.json/default/TopLevel.ts
index 5fac106..b1f7df7 100644
--- a/base/typescript/test/inputs/json/misc/f3139.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/f3139.json/default/TopLevel.ts
@@ -99,15 +99,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/f3edf.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/f3edf.json/default/TopLevel.ts
index 0ee4776..d624211 100644
--- a/base/typescript/test/inputs/json/misc/f3edf.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/f3edf.json/default/TopLevel.ts
@@ -105,15 +105,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/f466a.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/f466a.json/default/TopLevel.ts
index 0ee4776..d624211 100644
--- a/base/typescript/test/inputs/json/misc/f466a.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/f466a.json/default/TopLevel.ts
@@ -105,15 +105,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/f6a65.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/f6a65.json/default/TopLevel.ts
index 9d3530a..0388eb4 100644
--- a/base/typescript/test/inputs/json/misc/f6a65.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/f6a65.json/default/TopLevel.ts
@@ -204,15 +204,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/f74d5.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/f74d5.json/default/TopLevel.ts
index f041cd4..e74ebdb 100644
--- a/base/typescript/test/inputs/json/misc/f74d5.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/f74d5.json/default/TopLevel.ts
@@ -206,15 +206,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/f82d9.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/f82d9.json/default/TopLevel.ts
index b4eda77..e8bc876 100644
--- a/base/typescript/test/inputs/json/misc/f82d9.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/f82d9.json/default/TopLevel.ts
@@ -180,15 +180,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/f974d.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/f974d.json/default/TopLevel.ts
index 1e2d45e..f045824 100644
--- a/base/typescript/test/inputs/json/misc/f974d.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/f974d.json/default/TopLevel.ts
@@ -100,15 +100,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/faff5.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/faff5.json/default/TopLevel.ts
index 8b93687..41f69ac 100644
--- a/base/typescript/test/inputs/json/misc/faff5.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/faff5.json/default/TopLevel.ts
@@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/fcca3.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/fcca3.json/default/TopLevel.ts
index ecfb540..a9e8711 100644
--- a/base/typescript/test/inputs/json/misc/fcca3.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/fcca3.json/default/TopLevel.ts
@@ -306,15 +306,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/misc/fd329.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/fd329.json/default/TopLevel.ts
index cda1ee3..38eedf1 100644
--- a/base/typescript/test/inputs/json/misc/fd329.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/fd329.json/default/TopLevel.ts
@@ -109,15 +109,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/blns-object.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/blns-object.json/default/TopLevel.ts
index 8810fcc..75c36fd 100644
--- a/base/typescript/test/inputs/json/priority/blns-object.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/blns-object.json/default/TopLevel.ts
@@ -691,15 +691,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/bug2037.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/bug2037.json/default/TopLevel.ts
index 8df39e5..b7774e3 100644
--- a/base/typescript/test/inputs/json/priority/bug2037.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/bug2037.json/default/TopLevel.ts
@@ -104,15 +104,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/bug2521.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/bug2521.json/default/TopLevel.ts
index 9d96633..71bdb20 100644
--- a/base/typescript/test/inputs/json/priority/bug2521.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/bug2521.json/default/TopLevel.ts
@@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/bug2590.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/bug2590.json/default/TopLevel.ts
index 053f500..6f1b3c3 100644
--- a/base/typescript/test/inputs/json/priority/bug2590.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/bug2590.json/default/TopLevel.ts
@@ -102,15 +102,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/bug2663.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/bug2663.json/default/TopLevel.ts
index 50059cf..551b34c 100644
--- a/base/typescript/test/inputs/json/priority/bug2663.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/bug2663.json/default/TopLevel.ts
@@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/bug2793.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/bug2793.json/default/TopLevel.ts
index 32d6530..21337ab 100644
--- a/base/typescript/test/inputs/json/priority/bug2793.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/bug2793.json/default/TopLevel.ts
@@ -102,15 +102,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/bug427.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/bug427.json/default/TopLevel.ts
index 7d10525..ce49d3d 100644
--- a/base/typescript/test/inputs/json/priority/bug427.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/bug427.json/default/TopLevel.ts
@@ -653,15 +653,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/bug790.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/bug790.json/default/TopLevel.ts
index ce20e2b..72f464b 100644
--- a/base/typescript/test/inputs/json/priority/bug790.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/bug790.json/default/TopLevel.ts
@@ -103,15 +103,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/bug855-short.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/bug855-short.json/default/TopLevel.ts
index a03854d..3d18c2a 100644
--- a/base/typescript/test/inputs/json/priority/bug855-short.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/bug855-short.json/default/TopLevel.ts
@@ -100,15 +100,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/bug863.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/bug863.json/default/TopLevel.ts
index a2b9868..1d678fc 100644
--- a/base/typescript/test/inputs/json/priority/bug863.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/bug863.json/default/TopLevel.ts
@@ -166,15 +166,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/coin-pairs.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/coin-pairs.json/default/TopLevel.ts
index f1cd3b5..48962b7 100644
--- a/base/typescript/test/inputs/json/priority/coin-pairs.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/coin-pairs.json/default/TopLevel.ts
@@ -108,15 +108,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/combinations1.json/acronym-style-pascal--d9e0c1bd777a/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations1.json/acronym-style-pascal--d9e0c1bd777a/TopLevel.ts
index 41a06c5..542710c 100644
--- a/base/typescript/test/inputs/json/priority/combinations1.json/acronym-style-pascal--d9e0c1bd777a/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations1.json/acronym-style-pascal--d9e0c1bd777a/TopLevel.ts
@@ -488,15 +488,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/combinations1.json/converters-all-objects--3a443babd1cb/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations1.json/converters-all-objects--3a443babd1cb/TopLevel.ts
index 7c9cf7b..405bb56 100644
--- a/base/typescript/test/inputs/json/priority/combinations1.json/converters-all-objects--3a443babd1cb/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations1.json/converters-all-objects--3a443babd1cb/TopLevel.ts
@@ -592,15 +592,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/combinations1.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations1.json/default/TopLevel.ts
index 41a06c5..542710c 100644
--- a/base/typescript/test/inputs/json/priority/combinations1.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations1.json/default/TopLevel.ts
@@ -488,15 +488,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/combinations1.json/nice-property-names-true--f4d7920ee2ce/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations1.json/nice-property-names-true--f4d7920ee2ce/TopLevel.ts
index f5feab8..fd0686c 100644
--- a/base/typescript/test/inputs/json/priority/combinations1.json/nice-property-names-true--f4d7920ee2ce/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations1.json/nice-property-names-true--f4d7920ee2ce/TopLevel.ts
@@ -488,15 +488,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/combinations1.json/prefer-const-values-true--6b26e4d1265c/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations1.json/prefer-const-values-true--6b26e4d1265c/TopLevel.ts
index 41a06c5..542710c 100644
--- a/base/typescript/test/inputs/json/priority/combinations1.json/prefer-const-values-true--6b26e4d1265c/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations1.json/prefer-const-values-true--6b26e4d1265c/TopLevel.ts
@@ -488,15 +488,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/combinations1.json/prefer-types-true--df33e18681f9/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations1.json/prefer-types-true--df33e18681f9/TopLevel.ts
index 3e06633..c459d41 100644
--- a/base/typescript/test/inputs/json/priority/combinations1.json/prefer-types-true--df33e18681f9/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations1.json/prefer-types-true--df33e18681f9/TopLevel.ts
@@ -488,15 +488,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/combinations1.json/prefer-unions-false--a5053c0a486d/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations1.json/prefer-unions-false--a5053c0a486d/TopLevel.ts
index 41a06c5..542710c 100644
--- a/base/typescript/test/inputs/json/priority/combinations1.json/prefer-unions-false--a5053c0a486d/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations1.json/prefer-unions-false--a5053c0a486d/TopLevel.ts
@@ -488,15 +488,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/combinations1.json/prefer-unknown-false--f1ab9e45d823/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations1.json/prefer-unknown-false--f1ab9e45d823/TopLevel.ts
index 41a06c5..542710c 100644
--- a/base/typescript/test/inputs/json/priority/combinations1.json/prefer-unknown-false--f1ab9e45d823/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations1.json/prefer-unknown-false--f1ab9e45d823/TopLevel.ts
@@ -488,15 +488,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/combinations1.json/raw-type-any--474b307c39db/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations1.json/raw-type-any--474b307c39db/TopLevel.ts
index 5c398d8..9fa0df5 100644
--- a/base/typescript/test/inputs/json/priority/combinations1.json/raw-type-any--474b307c39db/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations1.json/raw-type-any--474b307c39db/TopLevel.ts
@@ -488,15 +488,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/combinations1.json/readonly-true--24da4fc107df/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations1.json/readonly-true--24da4fc107df/TopLevel.ts
index 421bef2..77a2ff0 100644
--- a/base/typescript/test/inputs/json/priority/combinations1.json/readonly-true--24da4fc107df/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations1.json/readonly-true--24da4fc107df/TopLevel.ts
@@ -488,15 +488,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/combinations1.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations1.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.ts
index 8cb10e2..baa7c41 100644
--- a/base/typescript/test/inputs/json/priority/combinations1.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations1.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.ts
@@ -488,15 +488,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/combinations2.json/acronym-style-pascal--d9e0c1bd777a/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations2.json/acronym-style-pascal--d9e0c1bd777a/TopLevel.ts
index 4f94139..0cf2c61 100644
--- a/base/typescript/test/inputs/json/priority/combinations2.json/acronym-style-pascal--d9e0c1bd777a/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations2.json/acronym-style-pascal--d9e0c1bd777a/TopLevel.ts
@@ -440,15 +440,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/combinations2.json/converters-all-objects--3a443babd1cb/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations2.json/converters-all-objects--3a443babd1cb/TopLevel.ts
index 28b6e2f..7af1f47 100644
--- a/base/typescript/test/inputs/json/priority/combinations2.json/converters-all-objects--3a443babd1cb/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations2.json/converters-all-objects--3a443babd1cb/TopLevel.ts
@@ -520,15 +520,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/combinations2.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations2.json/default/TopLevel.ts
index 4f94139..0cf2c61 100644
--- a/base/typescript/test/inputs/json/priority/combinations2.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations2.json/default/TopLevel.ts
@@ -440,15 +440,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/combinations2.json/nice-property-names-true--f4d7920ee2ce/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations2.json/nice-property-names-true--f4d7920ee2ce/TopLevel.ts
index 0e9e33e..a998694 100644
--- a/base/typescript/test/inputs/json/priority/combinations2.json/nice-property-names-true--f4d7920ee2ce/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations2.json/nice-property-names-true--f4d7920ee2ce/TopLevel.ts
@@ -440,15 +440,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/combinations2.json/prefer-const-values-true--6b26e4d1265c/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations2.json/prefer-const-values-true--6b26e4d1265c/TopLevel.ts
index 4f94139..0cf2c61 100644
--- a/base/typescript/test/inputs/json/priority/combinations2.json/prefer-const-values-true--6b26e4d1265c/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations2.json/prefer-const-values-true--6b26e4d1265c/TopLevel.ts
@@ -440,15 +440,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/combinations2.json/prefer-types-true--df33e18681f9/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations2.json/prefer-types-true--df33e18681f9/TopLevel.ts
index 2d9d05c..dd1c517 100644
--- a/base/typescript/test/inputs/json/priority/combinations2.json/prefer-types-true--df33e18681f9/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations2.json/prefer-types-true--df33e18681f9/TopLevel.ts
@@ -440,15 +440,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/combinations2.json/prefer-unions-false--a5053c0a486d/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations2.json/prefer-unions-false--a5053c0a486d/TopLevel.ts
index 4f94139..0cf2c61 100644
--- a/base/typescript/test/inputs/json/priority/combinations2.json/prefer-unions-false--a5053c0a486d/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations2.json/prefer-unions-false--a5053c0a486d/TopLevel.ts
@@ -440,15 +440,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/combinations2.json/prefer-unknown-false--f1ab9e45d823/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations2.json/prefer-unknown-false--f1ab9e45d823/TopLevel.ts
index 4f94139..0cf2c61 100644
--- a/base/typescript/test/inputs/json/priority/combinations2.json/prefer-unknown-false--f1ab9e45d823/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations2.json/prefer-unknown-false--f1ab9e45d823/TopLevel.ts
@@ -440,15 +440,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/combinations2.json/raw-type-any--474b307c39db/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations2.json/raw-type-any--474b307c39db/TopLevel.ts
index f174ab2..9b327ea 100644
--- a/base/typescript/test/inputs/json/priority/combinations2.json/raw-type-any--474b307c39db/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations2.json/raw-type-any--474b307c39db/TopLevel.ts
@@ -440,15 +440,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/combinations2.json/readonly-true--24da4fc107df/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations2.json/readonly-true--24da4fc107df/TopLevel.ts
index 61df619..0add202 100644
--- a/base/typescript/test/inputs/json/priority/combinations2.json/readonly-true--24da4fc107df/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations2.json/readonly-true--24da4fc107df/TopLevel.ts
@@ -440,15 +440,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/combinations2.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations2.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.ts
index 816b638..9ee5cc8 100644
--- a/base/typescript/test/inputs/json/priority/combinations2.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations2.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.ts
@@ -440,15 +440,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/combinations3.json/acronym-style-pascal--d9e0c1bd777a/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations3.json/acronym-style-pascal--d9e0c1bd777a/TopLevel.ts
index 4c64d25..deeb945 100644
--- a/base/typescript/test/inputs/json/priority/combinations3.json/acronym-style-pascal--d9e0c1bd777a/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations3.json/acronym-style-pascal--d9e0c1bd777a/TopLevel.ts
@@ -544,15 +544,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/combinations3.json/converters-all-objects--3a443babd1cb/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations3.json/converters-all-objects--3a443babd1cb/TopLevel.ts
index 76a3c6a..dca1901 100644
--- a/base/typescript/test/inputs/json/priority/combinations3.json/converters-all-objects--3a443babd1cb/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations3.json/converters-all-objects--3a443babd1cb/TopLevel.ts
@@ -656,15 +656,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/combinations3.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations3.json/default/TopLevel.ts
index 4c64d25..deeb945 100644
--- a/base/typescript/test/inputs/json/priority/combinations3.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations3.json/default/TopLevel.ts
@@ -544,15 +544,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/combinations3.json/nice-property-names-true--f4d7920ee2ce/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations3.json/nice-property-names-true--f4d7920ee2ce/TopLevel.ts
index aa717c4..c4ee62d 100644
--- a/base/typescript/test/inputs/json/priority/combinations3.json/nice-property-names-true--f4d7920ee2ce/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations3.json/nice-property-names-true--f4d7920ee2ce/TopLevel.ts
@@ -544,15 +544,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/combinations3.json/prefer-const-values-true--6b26e4d1265c/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations3.json/prefer-const-values-true--6b26e4d1265c/TopLevel.ts
index 4c64d25..deeb945 100644
--- a/base/typescript/test/inputs/json/priority/combinations3.json/prefer-const-values-true--6b26e4d1265c/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations3.json/prefer-const-values-true--6b26e4d1265c/TopLevel.ts
@@ -544,15 +544,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/combinations3.json/prefer-types-true--df33e18681f9/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations3.json/prefer-types-true--df33e18681f9/TopLevel.ts
index 15a61d5..bab6e2e 100644
--- a/base/typescript/test/inputs/json/priority/combinations3.json/prefer-types-true--df33e18681f9/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations3.json/prefer-types-true--df33e18681f9/TopLevel.ts
@@ -544,15 +544,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/combinations3.json/prefer-unions-false--a5053c0a486d/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations3.json/prefer-unions-false--a5053c0a486d/TopLevel.ts
index 4c64d25..deeb945 100644
--- a/base/typescript/test/inputs/json/priority/combinations3.json/prefer-unions-false--a5053c0a486d/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations3.json/prefer-unions-false--a5053c0a486d/TopLevel.ts
@@ -544,15 +544,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/combinations3.json/prefer-unknown-false--f1ab9e45d823/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations3.json/prefer-unknown-false--f1ab9e45d823/TopLevel.ts
index 4c64d25..deeb945 100644
--- a/base/typescript/test/inputs/json/priority/combinations3.json/prefer-unknown-false--f1ab9e45d823/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations3.json/prefer-unknown-false--f1ab9e45d823/TopLevel.ts
@@ -544,15 +544,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/combinations3.json/raw-type-any--474b307c39db/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations3.json/raw-type-any--474b307c39db/TopLevel.ts
index 1605e8a..66a975d 100644
--- a/base/typescript/test/inputs/json/priority/combinations3.json/raw-type-any--474b307c39db/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations3.json/raw-type-any--474b307c39db/TopLevel.ts
@@ -544,15 +544,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/combinations3.json/readonly-true--24da4fc107df/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations3.json/readonly-true--24da4fc107df/TopLevel.ts
index af63ce5..9ddb448 100644
--- a/base/typescript/test/inputs/json/priority/combinations3.json/readonly-true--24da4fc107df/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations3.json/readonly-true--24da4fc107df/TopLevel.ts
@@ -544,15 +544,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/combinations3.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations3.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.ts
index 4155baa..ce3c4d5 100644
--- a/base/typescript/test/inputs/json/priority/combinations3.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations3.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.ts
@@ -544,15 +544,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/combinations4.json/acronym-style-pascal--d9e0c1bd777a/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations4.json/acronym-style-pascal--d9e0c1bd777a/TopLevel.ts
index 1ba256c..c743e3a 100644
--- a/base/typescript/test/inputs/json/priority/combinations4.json/acronym-style-pascal--d9e0c1bd777a/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations4.json/acronym-style-pascal--d9e0c1bd777a/TopLevel.ts
@@ -614,15 +614,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/combinations4.json/converters-all-objects--3a443babd1cb/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations4.json/converters-all-objects--3a443babd1cb/TopLevel.ts
index c3c402f..32879ba 100644
--- a/base/typescript/test/inputs/json/priority/combinations4.json/converters-all-objects--3a443babd1cb/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations4.json/converters-all-objects--3a443babd1cb/TopLevel.ts
@@ -742,15 +742,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/combinations4.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations4.json/default/TopLevel.ts
index 1ba256c..c743e3a 100644
--- a/base/typescript/test/inputs/json/priority/combinations4.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations4.json/default/TopLevel.ts
@@ -614,15 +614,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/combinations4.json/nice-property-names-true--f4d7920ee2ce/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations4.json/nice-property-names-true--f4d7920ee2ce/TopLevel.ts
index 6c85159..a531c43 100644
--- a/base/typescript/test/inputs/json/priority/combinations4.json/nice-property-names-true--f4d7920ee2ce/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations4.json/nice-property-names-true--f4d7920ee2ce/TopLevel.ts
@@ -614,15 +614,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/combinations4.json/prefer-const-values-true--6b26e4d1265c/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations4.json/prefer-const-values-true--6b26e4d1265c/TopLevel.ts
index 1ba256c..c743e3a 100644
--- a/base/typescript/test/inputs/json/priority/combinations4.json/prefer-const-values-true--6b26e4d1265c/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations4.json/prefer-const-values-true--6b26e4d1265c/TopLevel.ts
@@ -614,15 +614,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/combinations4.json/prefer-types-true--df33e18681f9/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations4.json/prefer-types-true--df33e18681f9/TopLevel.ts
index 63d4ee6..33bfc62 100644
--- a/base/typescript/test/inputs/json/priority/combinations4.json/prefer-types-true--df33e18681f9/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations4.json/prefer-types-true--df33e18681f9/TopLevel.ts
@@ -614,15 +614,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/combinations4.json/prefer-unions-false--a5053c0a486d/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations4.json/prefer-unions-false--a5053c0a486d/TopLevel.ts
index 1ba256c..c743e3a 100644
--- a/base/typescript/test/inputs/json/priority/combinations4.json/prefer-unions-false--a5053c0a486d/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations4.json/prefer-unions-false--a5053c0a486d/TopLevel.ts
@@ -614,15 +614,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/combinations4.json/prefer-unknown-false--f1ab9e45d823/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations4.json/prefer-unknown-false--f1ab9e45d823/TopLevel.ts
index 1ba256c..c743e3a 100644
--- a/base/typescript/test/inputs/json/priority/combinations4.json/prefer-unknown-false--f1ab9e45d823/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations4.json/prefer-unknown-false--f1ab9e45d823/TopLevel.ts
@@ -614,15 +614,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/combinations4.json/raw-type-any--474b307c39db/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations4.json/raw-type-any--474b307c39db/TopLevel.ts
index f8035a6..db8aa65 100644
--- a/base/typescript/test/inputs/json/priority/combinations4.json/raw-type-any--474b307c39db/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations4.json/raw-type-any--474b307c39db/TopLevel.ts
@@ -614,15 +614,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/combinations4.json/readonly-true--24da4fc107df/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations4.json/readonly-true--24da4fc107df/TopLevel.ts
index 41cb890..095a16c 100644
--- a/base/typescript/test/inputs/json/priority/combinations4.json/readonly-true--24da4fc107df/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations4.json/readonly-true--24da4fc107df/TopLevel.ts
@@ -614,15 +614,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/combinations4.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations4.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.ts
index eca522a..95b3291 100644
--- a/base/typescript/test/inputs/json/priority/combinations4.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations4.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.ts
@@ -614,15 +614,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/combined-enum.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/combined-enum.json/default/TopLevel.ts
index e6588db..37bdf50 100644
--- a/base/typescript/test/inputs/json/priority/combined-enum.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combined-enum.json/default/TopLevel.ts
@@ -103,15 +103,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/direct-recursive.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/direct-recursive.json/default/TopLevel.ts
index 6f15eab..2d5cdbd 100644
--- a/base/typescript/test/inputs/json/priority/direct-recursive.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/direct-recursive.json/default/TopLevel.ts
@@ -100,15 +100,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/empty-enum.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/empty-enum.json/default/TopLevel.ts
index 89c0152..7dfc6b7 100644
--- a/base/typescript/test/inputs/json/priority/empty-enum.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/empty-enum.json/default/TopLevel.ts
@@ -100,15 +100,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/identifiers.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/identifiers.json/default/TopLevel.ts
index bb820bd..de42c53 100644
--- a/base/typescript/test/inputs/json/priority/identifiers.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/identifiers.json/default/TopLevel.ts
@@ -124,15 +124,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/issue2680-object-array.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/issue2680-object-array.json/default/TopLevel.ts
index d78d3a6..c8e46d4 100644
--- a/base/typescript/test/inputs/json/priority/issue2680-object-array.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/issue2680-object-array.json/default/TopLevel.ts
@@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/issue2680-scalar-array.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/issue2680-scalar-array.json/default/TopLevel.ts
index 1b8258a..9f9b3d6 100644
--- a/base/typescript/test/inputs/json/priority/issue2680-scalar-array.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/issue2680-scalar-array.json/default/TopLevel.ts
@@ -94,15 +94,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/keywords.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/keywords.json/default/TopLevel.ts
index 888a469..9534f60 100644
--- a/base/typescript/test/inputs/json/priority/keywords.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/keywords.json/default/TopLevel.ts
@@ -1788,15 +1788,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/keywords.json/prefer-types-true--df33e18681f9/TopLevel.ts b/head/typescript/test/inputs/json/priority/keywords.json/prefer-types-true--df33e18681f9/TopLevel.ts
index 4644dde..f1590b7 100644
--- a/base/typescript/test/inputs/json/priority/keywords.json/prefer-types-true--df33e18681f9/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/keywords.json/prefer-types-true--df33e18681f9/TopLevel.ts
@@ -1788,15 +1788,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/kotlin-enum-class-case-collision.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/kotlin-enum-class-case-collision.json/default/TopLevel.ts
index 4d8cfac..eeab77a 100644
--- a/base/typescript/test/inputs/json/priority/kotlin-enum-class-case-collision.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/kotlin-enum-class-case-collision.json/default/TopLevel.ts
@@ -100,15 +100,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/list.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/list.json/default/TopLevel.ts
index a746c79..550a950 100644
--- a/base/typescript/test/inputs/json/priority/list.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/list.json/default/TopLevel.ts
@@ -97,15 +97,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/name-style.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/name-style.json/default/TopLevel.ts
index 91f7c97..2bcc4e2 100644
--- a/base/typescript/test/inputs/json/priority/name-style.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/name-style.json/default/TopLevel.ts
@@ -102,15 +102,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/nbl-stats.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/nbl-stats.json/default/TopLevel.ts
index 81e6cc0..26d8381 100644
--- a/base/typescript/test/inputs/json/priority/nbl-stats.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/nbl-stats.json/default/TopLevel.ts
@@ -373,15 +373,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/nested-objects.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/nested-objects.json/default/TopLevel.ts
index efb729e..a1b089d 100644
--- a/base/typescript/test/inputs/json/priority/nested-objects.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/nested-objects.json/default/TopLevel.ts
@@ -97,15 +97,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/no-classes.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/no-classes.json/default/TopLevel.ts
index 22038be..111e281 100644
--- a/base/typescript/test/inputs/json/priority/no-classes.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/no-classes.json/default/TopLevel.ts
@@ -94,15 +94,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/nst-test-suite.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/nst-test-suite.json/default/TopLevel.ts
index 8f0de5f..53012a2 100644
--- a/base/typescript/test/inputs/json/priority/nst-test-suite.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/nst-test-suite.json/default/TopLevel.ts
@@ -233,15 +233,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/number-map.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/number-map.json/default/TopLevel.ts
index b370ac6..5acf2f5 100644
--- a/base/typescript/test/inputs/json/priority/number-map.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/number-map.json/default/TopLevel.ts
@@ -96,15 +96,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/omit-empty.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/omit-empty.json/default/TopLevel.ts
index 27b173e..4629d9d 100644
--- a/base/typescript/test/inputs/json/priority/omit-empty.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/omit-empty.json/default/TopLevel.ts
@@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/optional-union.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/optional-union.json/default/TopLevel.ts
index 4547576..ed9914b 100644
--- a/base/typescript/test/inputs/json/priority/optional-union.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/optional-union.json/default/TopLevel.ts
@@ -100,15 +100,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/php-mixed-union.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/php-mixed-union.json/default/TopLevel.ts
index 17b0cf1..14ba2bd 100644
--- a/base/typescript/test/inputs/json/priority/php-mixed-union.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/php-mixed-union.json/default/TopLevel.ts
@@ -102,15 +102,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/php-validation.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/php-validation.json/default/TopLevel.ts
index 248fe95..ffabdda 100644
--- a/base/typescript/test/inputs/json/priority/php-validation.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/php-validation.json/default/TopLevel.ts
@@ -100,15 +100,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/recursive.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/recursive.json/default/TopLevel.ts
index f423b98..2c52978 100644
--- a/base/typescript/test/inputs/json/priority/recursive.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/recursive.json/default/TopLevel.ts
@@ -215,15 +215,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/simple-identifiers.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/simple-identifiers.json/default/TopLevel.ts
index af5bf27..61d8ad3 100644
--- a/base/typescript/test/inputs/json/priority/simple-identifiers.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/simple-identifiers.json/default/TopLevel.ts
@@ -104,15 +104,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/union-constructor-clash.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/union-constructor-clash.json/default/TopLevel.ts
index c348a91..9bf4778 100644
--- a/base/typescript/test/inputs/json/priority/union-constructor-clash.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/union-constructor-clash.json/default/TopLevel.ts
@@ -103,15 +103,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/unions.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/unions.json/default/TopLevel.ts
index fa46ff7..3f729e7 100644
--- a/base/typescript/test/inputs/json/priority/unions.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/unions.json/default/TopLevel.ts
@@ -106,15 +106,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/url.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/url.json/default/TopLevel.ts
index f1e35fd..56df2ba 100644
--- a/base/typescript/test/inputs/json/priority/url.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/url.json/default/TopLevel.ts
@@ -97,15 +97,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/priority/uuids.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/uuids.json/default/TopLevel.ts
index aa5c51e..450efa7 100644
--- a/base/typescript/test/inputs/json/priority/uuids.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/uuids.json/default/TopLevel.ts
@@ -101,15 +101,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/samples/bitcoin-block.json/default/TopLevel.ts b/head/typescript/test/inputs/json/samples/bitcoin-block.json/default/TopLevel.ts
index 1e2d45e..f045824 100644
--- a/base/typescript/test/inputs/json/samples/bitcoin-block.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/samples/bitcoin-block.json/default/TopLevel.ts
@@ -100,15 +100,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/samples/copy-with-property.json/default/TopLevel.ts b/head/typescript/test/inputs/json/samples/copy-with-property.json/default/TopLevel.ts
index b217a1b..2c5c49a 100644
--- a/base/typescript/test/inputs/json/samples/copy-with-property.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/samples/copy-with-property.json/default/TopLevel.ts
@@ -97,15 +97,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/samples/getting-started.json/default/TopLevel.ts b/head/typescript/test/inputs/json/samples/getting-started.json/default/TopLevel.ts
index 70b7eef..68047d4 100644
--- a/base/typescript/test/inputs/json/samples/getting-started.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/samples/getting-started.json/default/TopLevel.ts
@@ -97,15 +97,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/samples/github-events.json/default/TopLevel.ts b/head/typescript/test/inputs/json/samples/github-events.json/default/TopLevel.ts
index d3767df..f9be8e3 100644
--- a/base/typescript/test/inputs/json/samples/github-events.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/samples/github-events.json/default/TopLevel.ts
@@ -382,15 +382,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/samples/kitchen-sink.json/default/TopLevel.ts b/head/typescript/test/inputs/json/samples/kitchen-sink.json/default/TopLevel.ts
index 68f69b5..e3ddd80 100644
--- a/base/typescript/test/inputs/json/samples/kitchen-sink.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/samples/kitchen-sink.json/default/TopLevel.ts
@@ -128,15 +128,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/samples/null-safe.json/default/TopLevel.ts b/head/typescript/test/inputs/json/samples/null-safe.json/default/TopLevel.ts
index 806d27b..acb9d31 100644
--- a/base/typescript/test/inputs/json/samples/null-safe.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/samples/null-safe.json/default/TopLevel.ts
@@ -109,15 +109,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/samples/objc-control-characters.json/default/TopLevel.ts b/head/typescript/test/inputs/json/samples/objc-control-characters.json/default/TopLevel.ts
index 378c050..1cfdd69 100644
--- a/base/typescript/test/inputs/json/samples/objc-control-characters.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/samples/objc-control-characters.json/default/TopLevel.ts
@@ -100,15 +100,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/samples/pokedex.json/default/TopLevel.ts b/head/typescript/test/inputs/json/samples/pokedex.json/default/TopLevel.ts
index a170094..f442069 100644
--- a/base/typescript/test/inputs/json/samples/pokedex.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/samples/pokedex.json/default/TopLevel.ts
@@ -125,15 +125,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/samples/pokedex.json/prefer-types-true--df33e18681f9/TopLevel.ts b/head/typescript/test/inputs/json/samples/pokedex.json/prefer-types-true--df33e18681f9/TopLevel.ts
index a1bfc3f..871aee4 100644
--- a/base/typescript/test/inputs/json/samples/pokedex.json/prefer-types-true--df33e18681f9/TopLevel.ts
+++ b/head/typescript/test/inputs/json/samples/pokedex.json/prefer-types-true--df33e18681f9/TopLevel.ts
@@ -125,15 +125,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/samples/reddit.json/default/TopLevel.ts b/head/typescript/test/inputs/json/samples/reddit.json/default/TopLevel.ts
index 9024932..49a90d6 100644
--- a/base/typescript/test/inputs/json/samples/reddit.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/samples/reddit.json/default/TopLevel.ts
@@ -222,15 +222,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/samples/simple-object.json/default/TopLevel.ts b/head/typescript/test/inputs/json/samples/simple-object.json/default/TopLevel.ts
index 8b2550e..73b065e 100644
--- a/base/typescript/test/inputs/json/samples/simple-object.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/samples/simple-object.json/default/TopLevel.ts
@@ -98,15 +98,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/samples/spotify-album.json/default/TopLevel.ts b/head/typescript/test/inputs/json/samples/spotify-album.json/default/TopLevel.ts
index 9e9f733..e1ac35d 100644
--- a/base/typescript/test/inputs/json/samples/spotify-album.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/samples/spotify-album.json/default/TopLevel.ts
@@ -166,15 +166,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/samples/us-avg-temperatures.json/default/TopLevel.ts b/head/typescript/test/inputs/json/samples/us-avg-temperatures.json/default/TopLevel.ts
index cda1ee3..38eedf1 100644
--- a/base/typescript/test/inputs/json/samples/us-avg-temperatures.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/samples/us-avg-temperatures.json/default/TopLevel.ts
@@ -109,15 +109,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript/test/inputs/json/samples/us-senators.json/default/TopLevel.ts b/head/typescript/test/inputs/json/samples/us-senators.json/default/TopLevel.ts
index 85085e7..dd9e267 100644
--- a/base/typescript/test/inputs/json/samples/us-senators.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/samples/us-senators.json/default/TopLevel.ts
@@ -178,15 +178,10 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null) {
             return null;
         }
-        if (!(val instanceof Date) && (typeof val !== "string" || !/^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:[0-2][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:[.][0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9]))?$/i.test(val)))
-            return invalidValue(l("Date"), val, key, parent);
         const d = new Date(val);
         if (isNaN(d.valueOf())) {
             return invalidValue(l("Date"), val, key, parent);
         }
-        const date = typeof val === "string" ? val.slice(0, 10) : null;
-        if (date !== null && new Date(date + "T00:00:00Z").toISOString().slice(0, 10) !== date)
-            return invalidValue(l("Date"), val, key, parent);
         return d;
     }
 
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/016af.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/016af.json/default/TopLevel.ts
index 05ec271..9c87c4b 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/016af.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/016af.json/default/TopLevel.ts
@@ -2,7 +2,7 @@ import * as S from "effect/Schema";
 
 
 export class TotalPopulation extends S.Class<TotalPopulation>("TotalPopulation")({
-    "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "population": S.Int,
 }) {}
 
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/033b1.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/033b1.json/default/TopLevel.ts
index f216282..1e8fac1 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/033b1.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/033b1.json/default/TopLevel.ts
@@ -3,6 +3,6 @@ import * as S from "effect/Schema";
 
 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "base": S.String,
-    "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "rates": S.Record({ key: S.String, value: S.Number}),
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/0a358.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/0a358.json/default/TopLevel.ts
index 361f788..51eb5e0 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/0a358.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/0a358.json/default/TopLevel.ts
@@ -3,10 +3,10 @@ import * as S from "effect/Schema";
 
 export class Result extends S.Class<Result>("Result")({
     "code": S.String,
-    "created_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "created_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "id": S.Int,
     "name": S.String,
-    "updated_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "updated_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "uri": S.String,
 }) {}
 
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/0a91a.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/0a91a.json/default/TopLevel.ts
index 25aee95..fce9f67 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/0a91a.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/0a91a.json/default/TopLevel.ts
@@ -63,7 +63,7 @@ export class BaseRepo extends S.Class<BaseRepo>("BaseRepo")({
     "compare_url": S.String,
     "contents_url": S.String,
     "contributors_url": S.String,
-    "created_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "created_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "default_branch": S.String,
     "deployments_url": S.String,
     "description": S.Null,
@@ -104,7 +104,7 @@ export class BaseRepo extends S.Class<BaseRepo>("BaseRepo")({
     "owner": MergedBy,
     "private": S.Boolean,
     "pulls_url": S.String,
-    "pushed_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "pushed_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "releases_url": S.String,
     "size": S.Int,
     "ssh_url": S.String,
@@ -117,7 +117,7 @@ export class BaseRepo extends S.Class<BaseRepo>("BaseRepo")({
     "tags_url": S.String,
     "teams_url": S.String,
     "trees_url": S.String,
-    "updated_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "updated_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "url": S.String,
     "watchers": S.Int,
     "watchers_count": S.Int,
@@ -138,12 +138,12 @@ export class PullRequest extends S.Class<PullRequest>("PullRequest")({
     "base": Base,
     "body": S.String,
     "changed_files": S.Int,
-    "closed_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "closed_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "comments": S.Int,
     "comments_url": S.String,
     "commits": S.Int,
     "commits_url": S.String,
-    "created_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "created_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "deletions": S.Int,
     "diff_url": S.String,
     "head": Base,
@@ -157,7 +157,7 @@ export class PullRequest extends S.Class<PullRequest>("PullRequest")({
     "mergeable": S.Null,
     "mergeable_state": S.String,
     "merged": S.Boolean,
-    "merged_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "merged_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "merged_by": MergedBy,
     "milestone": S.Null,
     "number": S.Int,
@@ -170,7 +170,7 @@ export class PullRequest extends S.Class<PullRequest>("PullRequest")({
     "state": S.String,
     "statuses_url": S.String,
     "title": S.String,
-    "updated_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "updated_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "url": S.String,
     "user": MergedBy,
 }) {}
@@ -216,7 +216,7 @@ export class Actor extends S.Class<Actor>("Actor")({
 
 export class TopLevelElement extends S.Class<TopLevelElement>("TopLevelElement")({
     "actor": Actor,
-    "created_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "created_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "id": S.String,
     "org": S.optional(Actor),
     "payload": Payload,
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/0e0c2.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/0e0c2.json/default/TopLevel.ts
index 06c39dd..72c254e 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/0e0c2.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/0e0c2.json/default/TopLevel.ts
@@ -74,7 +74,7 @@ export class Result extends S.Class<Result>("Result")({
     "id": S.Int,
     "images": S.Array(Image),
     "language": ResultLanguage,
-    "release_date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "release_date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "stars": S.Int,
     "tags": S.NullOr(S.Array(S.Any)),
     "title": S.String,
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/167d6.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/167d6.json/default/TopLevel.ts
index f216282..1e8fac1 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/167d6.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/167d6.json/default/TopLevel.ts
@@ -3,6 +3,6 @@ import * as S from "effect/Schema";
 
 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "base": S.String,
-    "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "rates": S.Record({ key: S.String, value: S.Number}),
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/16bc5.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/16bc5.json/default/TopLevel.ts
index fd81247..b939e72 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/16bc5.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/16bc5.json/default/TopLevel.ts
@@ -94,7 +94,7 @@ export class Results extends S.Class<Results>("Results")({
 
 export class Query extends S.Class<Query>("Query")({
     "count": S.Int,
-    "created": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "created": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "lang": S.String,
     "results": Results,
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/1b28c.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/1b28c.json/default/TopLevel.ts
index 05ec271..9c87c4b 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/1b28c.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/1b28c.json/default/TopLevel.ts
@@ -2,7 +2,7 @@ import * as S from "effect/Schema";
 
 
 export class TotalPopulation extends S.Class<TotalPopulation>("TotalPopulation")({
-    "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "population": S.Int,
 }) {}
 
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/1b409.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/1b409.json/default/TopLevel.ts
index 0f86d0c..fb19eb0 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/1b409.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/1b409.json/default/TopLevel.ts
@@ -54,7 +54,7 @@ export type Title = S.Schema.Type<typeof Title>;
 
 export class Person extends S.Class<Person>("Person")({
     "bioguideid": S.String,
-    "birthday": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "birthday": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "cspanid": S.Int,
     "firstname": S.String,
     "gender": Gender,
@@ -87,7 +87,7 @@ export class ObjectElement extends S.Class<ObjectElement>("ObjectElement")({
     "current": S.Boolean,
     "description": S.String,
     "district": S.Int,
-    "enddate": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "enddate": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "extra": Extra,
     "id": S.Int,
     "leadership_title": S.NullOr(S.String),
@@ -98,7 +98,7 @@ export class ObjectElement extends S.Class<ObjectElement>("ObjectElement")({
     "role_type_label": RoleTypeLabel,
     "senator_class": S.Null,
     "senator_rank": S.Null,
-    "startdate": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "startdate": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "state": S.String,
     "title": Title,
     "title_long": RoleTypeLabel,
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/262f0.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/262f0.json/default/TopLevel.ts
index 4527c40..840c31a 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/262f0.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/262f0.json/default/TopLevel.ts
@@ -101,7 +101,7 @@ export class Results extends S.Class<Results>("Results")({
 
 export class Query extends S.Class<Query>("Query")({
     "count": S.Int,
-    "created": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "created": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "lang": S.String,
     "results": Results,
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/2d4e2.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/2d4e2.json/default/TopLevel.ts
index adcadc0..2a30ac5 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/2d4e2.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/2d4e2.json/default/TopLevel.ts
@@ -80,7 +80,7 @@ export type Title = S.Schema.Type<typeof Title>;
 
 export class Person extends S.Class<Person>("Person")({
     "bioguideid": S.String,
-    "birthday": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "birthday": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "cspanid": S.Int,
     "firstname": S.String,
     "gender": Gender,
@@ -113,7 +113,7 @@ export class ObjectElement extends S.Class<ObjectElement>("ObjectElement")({
     "current": S.Boolean,
     "description": S.String,
     "district": S.Null,
-    "enddate": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "enddate": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "extra": Extra,
     "id": S.Int,
     "leadership_title": S.NullOr(S.String),
@@ -126,7 +126,7 @@ export class ObjectElement extends S.Class<ObjectElement>("ObjectElement")({
     "senator_class_label": SenatorClassLabel,
     "senator_rank": SenatorRank,
     "senator_rank_label": SenatorRankLabel,
-    "startdate": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "startdate": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "state": S.String,
     "title": Title,
     "title_long": RoleTypeLabel,
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/31189.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/31189.json/default/TopLevel.ts
index 3a8eef8..8a5e879 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/31189.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/31189.json/default/TopLevel.ts
@@ -16,7 +16,7 @@ export class Rates extends S.Class<Rates>("Rates")({
 }) {}
 
 export class Period extends S.Class<Period>("Period")({
-    "effective_from": S.Union(S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)), EffectiveFromEnum),
+    "effective_from": S.Union(S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)), EffectiveFromEnum),
     "rates": Rates,
 }) {}
 
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/32d5c.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/32d5c.json/default/TopLevel.ts
index a215029..e029762 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/32d5c.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/32d5c.json/default/TopLevel.ts
@@ -2,7 +2,7 @@ import * as S from "effect/Schema";
 
 
 export class TopLevelElement extends S.Class<TopLevelElement>("TopLevelElement")({
-    "BirthDate": S.NullOr(S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/))),
+    "BirthDate": S.NullOr(S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)))),
     "BirthDateIsProtected": S.Boolean,
     "GenderTypeID": S.Int,
     "Notes": S.String,
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/337ed.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/337ed.json/default/TopLevel.ts
index defcf1d..fec8eb8 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/337ed.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/337ed.json/default/TopLevel.ts
@@ -24,12 +24,12 @@ export type ResultType = S.Schema.Type<typeof ResultType>;
 
 export class CustomIncome extends S.Class<CustomIncome>("CustomIncome")({
     "amount": S.Int,
-    "created_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "created_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "id": S.String,
     "name": S.String,
     "status": Status,
     "type": CustomIncomeType,
-    "updated_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "updated_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "uri": S.String,
 }) {}
 
@@ -37,11 +37,11 @@ export class Result extends S.Class<Result>("Result")({
     "cost_absolute": S.NullOr(S.Int),
     "cost_max": S.NullOr(S.Int),
     "cost_min": S.NullOr(S.Int),
-    "created_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "created_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "customIncomes": S.Array(CustomIncome),
     "direct_rep_costs_max": S.Null,
     "direct_rep_costs_min": S.Null,
-    "end_date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "end_date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "eur_sources_grants": S.Int,
     "eur_sources_grants_src": S.NullOr(S.String),
     "eur_sources_procurement": S.Int,
@@ -57,14 +57,14 @@ export class Result extends S.Class<Result>("Result")({
     "public_financing_national": S.NullOr(S.Int),
     "public_financing_total": S.NullOr(S.Int),
     "representative": S.String,
-    "start_date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "start_date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "status": Status,
     "total_budget": S.NullOr(S.Int),
     "turnover_absolute": S.NullOr(S.Int),
     "turnover_max": S.NullOr(S.Int),
     "turnover_min": S.NullOr(S.Int),
     "type": ResultType,
-    "updated_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "updated_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "uri": S.String,
 }) {}
 
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/33d2e.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/33d2e.json/default/TopLevel.ts
index b2e54fe..fc8182d 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/33d2e.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/33d2e.json/default/TopLevel.ts
@@ -43,11 +43,11 @@ export class Prize extends S.Class<Prize>("Prize")({
 }) {}
 
 export class Laureate extends S.Class<Laureate>("Laureate")({
-    "born": S.Union(S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)), BornEnum),
+    "born": S.Union(S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)), BornEnum),
     "bornCity": S.optional(S.String),
     "bornCountry": S.optional(S.String),
     "bornCountryCode": S.optional(S.String),
-    "died": S.Union(S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)), BornEnum),
+    "died": S.Union(S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)), BornEnum),
     "diedCity": S.optional(S.String),
     "diedCountry": S.optional(S.String),
     "diedCountryCode": S.optional(S.String),
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/3659d.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/3659d.json/default/TopLevel.ts
index 05ec271..9c87c4b 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/3659d.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/3659d.json/default/TopLevel.ts
@@ -2,7 +2,7 @@ import * as S from "effect/Schema";
 
 
 export class TotalPopulation extends S.Class<TotalPopulation>("TotalPopulation")({
-    "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "population": S.Int,
 }) {}
 
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/3f1ce.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/3f1ce.json/default/TopLevel.ts
index c62ac32..27cc22a 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/3f1ce.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/3f1ce.json/default/TopLevel.ts
@@ -99,7 +99,7 @@ export class Results extends S.Class<Results>("Results")({
 
 export class Query extends S.Class<Query>("Query")({
     "count": S.Int,
-    "created": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "created": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "lang": S.String,
     "results": Results,
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/43eaf.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/43eaf.json/default/TopLevel.ts
index f216282..1e8fac1 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/43eaf.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/43eaf.json/default/TopLevel.ts
@@ -3,6 +3,6 @@ import * as S from "effect/Schema";
 
 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "base": S.String,
-    "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "rates": S.Record({ key: S.String, value: S.Number}),
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/4961a.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/4961a.json/default/TopLevel.ts
index 05ec271..9c87c4b 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/4961a.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/4961a.json/default/TopLevel.ts
@@ -2,7 +2,7 @@ import * as S from "effect/Schema";
 
 
 export class TotalPopulation extends S.Class<TotalPopulation>("TotalPopulation")({
-    "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "population": S.Int,
 }) {}
 
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/4a0d7.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/4a0d7.json/default/TopLevel.ts
index 05ec271..9c87c4b 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/4a0d7.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/4a0d7.json/default/TopLevel.ts
@@ -2,7 +2,7 @@ import * as S from "effect/Schema";
 
 
 export class TotalPopulation extends S.Class<TotalPopulation>("TotalPopulation")({
-    "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "population": S.Int,
 }) {}
 
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/4c547.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/4c547.json/default/TopLevel.ts
index fd81247..b939e72 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/4c547.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/4c547.json/default/TopLevel.ts
@@ -94,7 +94,7 @@ export class Results extends S.Class<Results>("Results")({
 
 export class Query extends S.Class<Query>("Query")({
     "count": S.Int,
-    "created": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "created": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "lang": S.String,
     "results": Results,
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/4e336.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/4e336.json/default/TopLevel.ts
index 05ec271..9c87c4b 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/4e336.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/4e336.json/default/TopLevel.ts
@@ -2,7 +2,7 @@ import * as S from "effect/Schema";
 
 
 export class TotalPopulation extends S.Class<TotalPopulation>("TotalPopulation")({
-    "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "population": S.Int,
 }) {}
 
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/54d32.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/54d32.json/default/TopLevel.ts
index 92caac8..79f9b97 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/54d32.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/54d32.json/default/TopLevel.ts
@@ -8,12 +8,12 @@ export const Status = S.Literal(
 export type Status = S.Schema.Type<typeof Status>;
 
 export class Result extends S.Class<Result>("Result")({
-    "created_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "created_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "id": S.String,
     "person_id": S.String,
     "representative_id": S.String,
     "status": Status,
-    "updated_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "updated_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
 }) {}
 
 export class Facets extends S.Class<Facets>("Facets")(S.Struct({}).pipe(S.filter(value => typeof value === "object" && value !== null && !Array.isArray(value)))
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/5eae5.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/5eae5.json/default/TopLevel.ts
index 91b64bf..5ad7a81 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/5eae5.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/5eae5.json/default/TopLevel.ts
@@ -2,7 +2,7 @@ import * as S from "effect/Schema";
 
 
 export class TopLevelElement extends S.Class<TopLevelElement>("TopLevelElement")({
-    "Date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "Date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "ID": S.Int,
     "Sponsor": S.String,
     "Title": S.String,
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/5f3a1.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/5f3a1.json/default/TopLevel.ts
index f216282..1e8fac1 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/5f3a1.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/5f3a1.json/default/TopLevel.ts
@@ -3,6 +3,6 @@ import * as S from "effect/Schema";
 
 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "base": S.String,
-    "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "rates": S.Record({ key: S.String, value: S.Number}),
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/6260a.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/6260a.json/default/TopLevel.ts
index f216282..1e8fac1 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/6260a.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/6260a.json/default/TopLevel.ts
@@ -3,6 +3,6 @@ import * as S from "effect/Schema";
 
 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "base": S.String,
-    "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "rates": S.Record({ key: S.String, value: S.Number}),
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/65dec.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/65dec.json/default/TopLevel.ts
index 772d822..5c10735 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/65dec.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/65dec.json/default/TopLevel.ts
@@ -55,7 +55,7 @@ export const Type = S.Literal(
 export type Type = S.Schema.Type<typeof Type>;
 
 export class Ruling extends S.Class<Ruling>("Ruling")({
-    "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "text": S.String,
 }) {}
 
@@ -105,6 +105,6 @@ export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "mkm_id": S.Int,
     "mkm_name": S.String,
     "name": S.String,
-    "releaseDate": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "releaseDate": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "type": S.String,
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/6dec6.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/6dec6.json/default/TopLevel.ts
index 03e6de3..a6d5846 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/6dec6.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/6dec6.json/default/TopLevel.ts
@@ -101,7 +101,7 @@ export class Results extends S.Class<Results>("Results")({
 
 export class Query extends S.Class<Query>("Query")({
     "count": S.Int,
-    "created": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "created": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "lang": S.String,
     "results": Results,
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/70c77.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/70c77.json/default/TopLevel.ts
index f216282..1e8fac1 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/70c77.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/70c77.json/default/TopLevel.ts
@@ -3,6 +3,6 @@ import * as S from "effect/Schema";
 
 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "base": S.String,
-    "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "rates": S.Record({ key: S.String, value: S.Number}),
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/734ad.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/734ad.json/default/TopLevel.ts
index 64f630a..f1779a4 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/734ad.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/734ad.json/default/TopLevel.ts
@@ -27,7 +27,7 @@ export class Result extends S.Class<Result>("Result")({
     "be_office_town": S.optional(S.String),
     "code_of_conduct": S.String,
     "contact_country": S.Int,
-    "created_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "created_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "entity": S.String,
     "goals": S.String,
     "head": S.String,
@@ -42,7 +42,7 @@ export class Result extends S.Class<Result>("Result")({
     "id": S.String,
     "identification_code": S.String,
     "info_members": S.String,
-    "last_update_date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "last_update_date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "legal": S.String,
     "legal_status": S.String,
     "main_category": S.Int,
@@ -58,12 +58,12 @@ export class Result extends S.Class<Result>("Result")({
     "networking": S.NullOr(S.String),
     "number_of_natural_persons": S.NullOr(S.Int),
     "other_code_of_conduct": S.NullOr(S.String),
-    "registration_date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "registration_date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "status": Status,
     "structure_members": S.String,
     "sub_category": S.Int,
     "sub_category_title": S.String,
-    "updated_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "updated_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "uri": S.String,
     "web_site_url": S.NullOr(S.String),
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/75912.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/75912.json/default/TopLevel.ts
index f216282..1e8fac1 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/75912.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/75912.json/default/TopLevel.ts
@@ -3,6 +3,6 @@ import * as S from "effect/Schema";
 
 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "base": S.String,
-    "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "rates": S.Record({ key: S.String, value: S.Number}),
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/77392.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/77392.json/default/TopLevel.ts
index f972c47..eda7f99 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/77392.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/77392.json/default/TopLevel.ts
@@ -24,7 +24,7 @@ export type Pha = S.Schema.Type<typeof Pha>;
 
 export class TopLevelElement extends S.Class<TopLevelElement>("TopLevelElement")({
     "designation": S.String,
-    "discovery_date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "discovery_date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "h_mag": S.optional(S.String),
     "i_deg": S.String,
     "moid_au": S.String,
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/7dfa6.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/7dfa6.json/default/TopLevel.ts
index 05ec271..9c87c4b 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/7dfa6.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/7dfa6.json/default/TopLevel.ts
@@ -2,7 +2,7 @@ import * as S from "effect/Schema";
 
 
 export class TotalPopulation extends S.Class<TotalPopulation>("TotalPopulation")({
-    "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "population": S.Int,
 }) {}
 
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/7f568.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/7f568.json/default/TopLevel.ts
index 70c0576..0d03187 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/7f568.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/7f568.json/default/TopLevel.ts
@@ -24,7 +24,7 @@ export class TopLevelElement extends S.Class<TopLevelElement>("TopLevelElement")
     "comments": S.Int,
     "comments_url": S.String,
     "commits_url": S.String,
-    "created_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "created_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "description": S.NullOr(S.String),
     "files": S.Record({ key: S.String, value: File}),
     "forks_url": S.String,
@@ -34,7 +34,7 @@ export class TopLevelElement extends S.Class<TopLevelElement>("TopLevelElement")
     "id": S.String,
     "public": S.Boolean,
     "truncated": S.Boolean,
-    "updated_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "updated_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "url": S.String,
     "user": S.Null,
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/80aff.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/80aff.json/default/TopLevel.ts
index e35c2fe..6a91c18 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/80aff.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/80aff.json/default/TopLevel.ts
@@ -2,12 +2,12 @@ import * as S from "effect/Schema";
 
 
 export class Result extends S.Class<Result>("Result")({
-    "created_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "created_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "id": S.Int,
     "items": S.Int,
     "name": S.String,
     "parent": S.NullOr(S.Int),
-    "updated_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "updated_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "uri": S.String,
 }) {}
 
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/88130.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/88130.json/default/TopLevel.ts
index fd81247..b939e72 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/88130.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/88130.json/default/TopLevel.ts
@@ -94,7 +94,7 @@ export class Results extends S.Class<Results>("Results")({
 
 export class Query extends S.Class<Query>("Query")({
     "count": S.Int,
-    "created": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "created": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "lang": S.String,
     "results": Results,
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/8a62c.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/8a62c.json/default/TopLevel.ts
index 05ec271..9c87c4b 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/8a62c.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/8a62c.json/default/TopLevel.ts
@@ -2,7 +2,7 @@ import * as S from "effect/Schema";
 
 
 export class TotalPopulation extends S.Class<TotalPopulation>("TotalPopulation")({
-    "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "population": S.Int,
 }) {}
 
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/9617f.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/9617f.json/default/TopLevel.ts
index f216282..1e8fac1 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/9617f.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/9617f.json/default/TopLevel.ts
@@ -3,6 +3,6 @@ import * as S from "effect/Schema";
 
 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "base": S.String,
-    "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "rates": S.Record({ key: S.String, value: S.Number}),
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/9929c.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/9929c.json/default/TopLevel.ts
index fd81247..b939e72 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/9929c.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/9929c.json/default/TopLevel.ts
@@ -94,7 +94,7 @@ export class Results extends S.Class<Results>("Results")({
 
 export class Query extends S.Class<Query>("Query")({
     "count": S.Int,
-    "created": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "created": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "lang": S.String,
     "results": Results,
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/9ac3b.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/9ac3b.json/default/TopLevel.ts
index 4d93756..bb7aa08 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/9ac3b.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/9ac3b.json/default/TopLevel.ts
@@ -15,7 +15,7 @@ export const Title = S.Literal(
 export type Title = S.Schema.Type<typeof Title>;
 
 export class Result extends S.Class<Result>("Result")({
-    "created_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "created_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "entity": S.String,
     "first_name": S.String,
     "id": S.String,
@@ -24,7 +24,7 @@ export class Result extends S.Class<Result>("Result")({
     "position": S.NullOr(S.String),
     "status": Status,
     "title": S.NullOr(Title),
-    "updated_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "updated_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "uri": S.String,
 }) {}
 
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/a0496.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/a0496.json/default/TopLevel.ts
index 7e685ae..3daceb3 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/a0496.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/a0496.json/default/TopLevel.ts
@@ -7,19 +7,19 @@ export class Errors extends S.Class<Errors>("Errors")(S.Struct({}).pipe(S.filter
 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "code": S.String,
     "column_names": S.Array(S.String),
-    "data": S.Array(S.Array(S.Union(S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)), S.Number, S.Null))),
+    "data": S.Array(S.Array(S.Union(S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)), S.Number, S.Null))),
     "description": S.String,
     "display_url": S.String,
     "errors": Errors,
     "frequency": S.String,
-    "from_date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "from_date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "id": S.Int,
     "name": S.String,
     "premium": S.Boolean,
     "source_code": S.String,
     "source_name": S.String,
-    "to_date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "to_date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "type": S.String,
-    "updated_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "updated_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "urlize_name": S.String,
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/a1eca.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/a1eca.json/default/TopLevel.ts
index fd81247..b939e72 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/a1eca.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/a1eca.json/default/TopLevel.ts
@@ -94,7 +94,7 @@ export class Results extends S.Class<Results>("Results")({
 
 export class Query extends S.Class<Query>("Query")({
     "count": S.Int,
-    "created": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "created": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "lang": S.String,
     "results": Results,
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/a9691.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/a9691.json/default/TopLevel.ts
index f216282..1e8fac1 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/a9691.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/a9691.json/default/TopLevel.ts
@@ -3,6 +3,6 @@ import * as S from "effect/Schema";
 
 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "base": S.String,
-    "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "rates": S.Record({ key: S.String, value: S.Number}),
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/abb4b.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/abb4b.json/default/TopLevel.ts
index 05ec271..9c87c4b 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/abb4b.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/abb4b.json/default/TopLevel.ts
@@ -2,7 +2,7 @@ import * as S from "effect/Schema";
 
 
 export class TotalPopulation extends S.Class<TotalPopulation>("TotalPopulation")({
-    "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "population": S.Int,
 }) {}
 
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/ac944.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/ac944.json/default/TopLevel.ts
index f216282..1e8fac1 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/ac944.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/ac944.json/default/TopLevel.ts
@@ -3,6 +3,6 @@ import * as S from "effect/Schema";
 
 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "base": S.String,
-    "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "rates": S.Record({ key: S.String, value: S.Number}),
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/b4865.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/b4865.json/default/TopLevel.ts
index f6a3af2..6b080f2 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/b4865.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/b4865.json/default/TopLevel.ts
@@ -36,7 +36,7 @@ export class TopLevelElement extends S.Class<TopLevelElement>("TopLevelElement")
     "recclass": S.String,
     "reclat": S.optional(S.String),
     "reclong": S.optional(S.String),
-    "year": S.optional(S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/))),
+    "year": S.optional(S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)))),
 }) {}
 
 export const TopLevel = S.Array(TopLevelElement);
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/b6f2c.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/b6f2c.json/default/TopLevel.ts
index 05ec271..9c87c4b 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/b6f2c.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/b6f2c.json/default/TopLevel.ts
@@ -2,7 +2,7 @@ import * as S from "effect/Schema";
 
 
 export class TotalPopulation extends S.Class<TotalPopulation>("TotalPopulation")({
-    "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "population": S.Int,
 }) {}
 
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/bb1ec.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/bb1ec.json/default/TopLevel.ts
index 05ec271..9c87c4b 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/bb1ec.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/bb1ec.json/default/TopLevel.ts
@@ -2,7 +2,7 @@ import * as S from "effect/Schema";
 
 
 export class TotalPopulation extends S.Class<TotalPopulation>("TotalPopulation")({
-    "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "population": S.Int,
 }) {}
 
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/cd463.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/cd463.json/default/TopLevel.ts
index f216282..1e8fac1 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/cd463.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/cd463.json/default/TopLevel.ts
@@ -3,6 +3,6 @@ import * as S from "effect/Schema";
 
 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "base": S.String,
-    "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "rates": S.Record({ key: S.String, value: S.Number}),
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/cf0d8.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/cf0d8.json/default/TopLevel.ts
index fd81247..b939e72 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/cf0d8.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/cf0d8.json/default/TopLevel.ts
@@ -94,7 +94,7 @@ export class Results extends S.Class<Results>("Results")({
 
 export class Query extends S.Class<Query>("Query")({
     "count": S.Int,
-    "created": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "created": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "lang": S.String,
     "results": Results,
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/cfbce.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/cfbce.json/default/TopLevel.ts
index f216282..1e8fac1 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/cfbce.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/cfbce.json/default/TopLevel.ts
@@ -3,6 +3,6 @@ import * as S from "effect/Schema";
 
 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "base": S.String,
-    "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "rates": S.Record({ key: S.String, value: S.Number}),
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/d0908.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/d0908.json/default/TopLevel.ts
index 05ec271..9c87c4b 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/d0908.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/d0908.json/default/TopLevel.ts
@@ -2,7 +2,7 @@ import * as S from "effect/Schema";
 
 
 export class TotalPopulation extends S.Class<TotalPopulation>("TotalPopulation")({
-    "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "population": S.Int,
 }) {}
 
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/d23d5.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/d23d5.json/default/TopLevel.ts
index cd7f79d..a5619a8 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/d23d5.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/d23d5.json/default/TopLevel.ts
@@ -3,10 +3,10 @@ import * as S from "effect/Schema";
 
 export class Result extends S.Class<Result>("Result")({
     "acronym": S.NullOr(S.String),
-    "created_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "created_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "id": S.String,
     "name": S.String,
-    "updated_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "updated_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "uri": S.String,
 }) {}
 
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/dbfb3.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/dbfb3.json/default/TopLevel.ts
index d5e4896..ed7b7a2 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/dbfb3.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/dbfb3.json/default/TopLevel.ts
@@ -100,7 +100,7 @@ export class Results extends S.Class<Results>("Results")({
 
 export class Query extends S.Class<Query>("Query")({
     "count": S.Int,
-    "created": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "created": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "lang": S.String,
     "results": Results,
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/dc44f.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/dc44f.json/default/TopLevel.ts
index 9dc093b..01d1eda 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/dc44f.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/dc44f.json/default/TopLevel.ts
@@ -104,7 +104,7 @@ export const Type = S.Literal(
 export type Type = S.Schema.Type<typeof Type>;
 
 export class Ruling extends S.Class<Ruling>("Ruling")({
-    "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "text": S.String,
 }) {}
 
@@ -153,6 +153,6 @@ export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "mkm_id": S.Int,
     "mkm_name": S.String,
     "name": S.String,
-    "releaseDate": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "releaseDate": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "type": S.String,
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/dd1ce.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/dd1ce.json/default/TopLevel.ts
index 9dc093b..01d1eda 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/dd1ce.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/dd1ce.json/default/TopLevel.ts
@@ -104,7 +104,7 @@ export const Type = S.Literal(
 export type Type = S.Schema.Type<typeof Type>;
 
 export class Ruling extends S.Class<Ruling>("Ruling")({
-    "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "text": S.String,
 }) {}
 
@@ -153,6 +153,6 @@ export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "mkm_id": S.Int,
     "mkm_name": S.String,
     "name": S.String,
-    "releaseDate": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "releaseDate": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "type": S.String,
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/df957.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/df957.json/default/TopLevel.ts
index fd81247..b939e72 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/df957.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/df957.json/default/TopLevel.ts
@@ -94,7 +94,7 @@ export class Results extends S.Class<Results>("Results")({
 
 export class Query extends S.Class<Query>("Query")({
     "count": S.Int,
-    "created": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "created": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "lang": S.String,
     "results": Results,
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/e2915.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/e2915.json/default/TopLevel.ts
index 12e9edc..95b1a25 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/e2915.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/e2915.json/default/TopLevel.ts
@@ -99,7 +99,7 @@ export class Results extends S.Class<Results>("Results")({
 
 export class Query extends S.Class<Query>("Query")({
     "count": S.Int,
-    "created": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "created": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "lang": S.String,
     "results": Results,
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/priority/bug2590.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/priority/bug2590.json/default/TopLevel.ts
index ce9bf3c..a8212ed 100644
--- a/base/typescript-effect-schema/test/inputs/json/priority/bug2590.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/priority/bug2590.json/default/TopLevel.ts
@@ -2,8 +2,8 @@ import * as S from "effect/Schema";
 
 
 export class Invoice extends S.Class<Invoice>("Invoice")({
-    "createdAt": S.NullOr(S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/))),
-    "dueDate": S.NullOr(S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/))),
+    "createdAt": S.NullOr(S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)))),
+    "dueDate": S.NullOr(S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value))),
     "name": S.String,
 }) {}
 
diff --git a/base/typescript-effect-schema/test/inputs/json/priority/bug2663.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/priority/bug2663.json/default/TopLevel.ts
index e36b8e2..710c13f 100644
--- a/base/typescript-effect-schema/test/inputs/json/priority/bug2663.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/priority/bug2663.json/default/TopLevel.ts
@@ -2,7 +2,7 @@ import * as S from "effect/Schema";
 
 
 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
-    "birthday": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
-    "lastSeen": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "birthday": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
+    "lastSeen": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "name": S.String,
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/priority/keywords.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/priority/keywords.json/default/TopLevel.ts
index f6366a4..7b6d940 100644
--- a/base/typescript-effect-schema/test/inputs/json/priority/keywords.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/priority/keywords.json/default/TopLevel.ts
@@ -1282,7 +1282,7 @@ export class DateTimeStyles extends S.Class<DateTimeStyles>("DateTimeStyles")({
 }) {}
 
 export class DateTime extends S.Class<DateTime>("DateTime")({
-    "DateTime": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "DateTime": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
 }) {}
 
 export class DateParseHandling extends S.Class<DateParseHandling>("DateParseHandling")({
diff --git a/base/typescript-effect-schema/test/inputs/json/samples/github-events.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/samples/github-events.json/default/TopLevel.ts
index dbdc00e..e47485b 100644
--- a/base/typescript-effect-schema/test/inputs/json/samples/github-events.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/samples/github-events.json/default/TopLevel.ts
@@ -88,7 +88,7 @@ export class BaseRepo extends S.Class<BaseRepo>("BaseRepo")({
     "compare_url": S.String,
     "contents_url": S.String,
     "contributors_url": S.String,
-    "created_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "created_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "default_branch": S.String,
     "deployments_url": S.String,
     "description": S.String,
@@ -129,7 +129,7 @@ export class BaseRepo extends S.Class<BaseRepo>("BaseRepo")({
     "owner": User,
     "private": S.Boolean,
     "pulls_url": S.String,
-    "pushed_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "pushed_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "releases_url": S.String,
     "size": S.Int,
     "ssh_url": S.String,
@@ -142,7 +142,7 @@ export class BaseRepo extends S.Class<BaseRepo>("BaseRepo")({
     "tags_url": S.String,
     "teams_url": S.String,
     "trees_url": S.String,
-    "updated_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "updated_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "url": S.String,
     "watchers": S.Int,
     "watchers_count": S.Int,
@@ -163,12 +163,12 @@ export class PayloadPullRequest extends S.Class<PayloadPullRequest>("PayloadPull
     "base": Base,
     "body": S.String,
     "changed_files": S.Int,
-    "closed_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "closed_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "comments": S.Int,
     "comments_url": S.String,
     "commits": S.Int,
     "commits_url": S.String,
-    "created_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "created_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "deletions": S.Int,
     "diff_url": S.String,
     "head": Base,
@@ -182,7 +182,7 @@ export class PayloadPullRequest extends S.Class<PayloadPullRequest>("PayloadPull
     "mergeable": S.Null,
     "mergeable_state": S.String,
     "merged": S.Boolean,
-    "merged_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "merged_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "merged_by": User,
     "milestone": S.Null,
     "number": S.Int,
@@ -195,18 +195,18 @@ export class PayloadPullRequest extends S.Class<PayloadPullRequest>("PayloadPull
     "state": S.String,
     "statuses_url": S.String,
     "title": S.String,
-    "updated_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "updated_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "url": S.String,
     "user": User,
 }) {}
 
 export class Comment extends S.Class<Comment>("Comment")({
     "body": S.String,
-    "created_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "created_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "html_url": S.String,
     "id": S.Int,
     "issue_url": S.String,
-    "updated_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "updated_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "url": S.String,
     "user": User,
 }) {}
@@ -214,10 +214,10 @@ export class Comment extends S.Class<Comment>("Comment")({
 export class Milestone extends S.Class<Milestone>("Milestone")({
     "closed_at": S.Null,
     "closed_issues": S.Int,
-    "created_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "created_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "creator": User,
     "description": S.String,
-    "due_on": S.NullOr(S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/))),
+    "due_on": S.NullOr(S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)))),
     "html_url": S.String,
     "id": S.Int,
     "labels_url": S.String,
@@ -225,7 +225,7 @@ export class Milestone extends S.Class<Milestone>("Milestone")({
     "open_issues": S.Int,
     "state": S.String,
     "title": S.String,
-    "updated_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "updated_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "url": S.String,
 }) {}
 
@@ -252,10 +252,10 @@ export class Issue extends S.Class<Issue>("Issue")({
     "assignee": S.Null,
     "assignees": S.Array(S.Any),
     "body": S.String,
-    "closed_at": S.NullOr(S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/))),
+    "closed_at": S.NullOr(S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)))),
     "comments": S.Int,
     "comments_url": S.String,
-    "created_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "created_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "events_url": S.String,
     "html_url": S.String,
     "id": S.Int,
@@ -268,7 +268,7 @@ export class Issue extends S.Class<Issue>("Issue")({
     "repository_url": S.String,
     "state": S.String,
     "title": S.String,
-    "updated_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "updated_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "url": S.String,
     "user": User,
 }) {}
@@ -284,7 +284,7 @@ export class Actor extends S.Class<Actor>("Actor")({
 
 export class TopLevelElement extends S.Class<TopLevelElement>("TopLevelElement")({
     "actor": Actor,
-    "created_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "created_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "id": S.String,
     "org": S.optional(Actor),
     "payload": Payload,
diff --git a/base/typescript-effect-schema/test/inputs/json/samples/null-safe.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/samples/null-safe.json/default/TopLevel.ts
index 6743615..3bfd56e 100644
--- a/base/typescript-effect-schema/test/inputs/json/samples/null-safe.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/samples/null-safe.json/default/TopLevel.ts
@@ -9,7 +9,7 @@ export class Address extends S.Class<Address>("Address")({
 
 export class Item extends S.Class<Item>("Item")({
     "address": S.optional(Address),
-    "created_at": S.optional(S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/))),
+    "created_at": S.optional(S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)))),
     "name": S.String,
     "sex": S.NullOr(S.Int),
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/samples/us-senators.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/samples/us-senators.json/default/TopLevel.ts
index 93d48f7..a8ecdfd 100644
--- a/base/typescript-effect-schema/test/inputs/json/samples/us-senators.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/samples/us-senators.json/default/TopLevel.ts
@@ -80,7 +80,7 @@ export type Title = S.Schema.Type<typeof Title>;
 
 export class Person extends S.Class<Person>("Person")({
     "bioguideid": S.String,
-    "birthday": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "birthday": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "cspanid": S.Int,
     "firstname": S.String,
     "gender": Gender,
@@ -112,7 +112,7 @@ export class ObjectElement extends S.Class<ObjectElement>("ObjectElement")({
     "current": S.Boolean,
     "description": S.String,
     "district": S.Null,
-    "enddate": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "enddate": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "extra": Extra,
     "leadership_title": S.NullOr(S.String),
     "party": Party,
@@ -124,7 +124,7 @@ export class ObjectElement extends S.Class<ObjectElement>("ObjectElement")({
     "senator_class_label": SenatorClassLabel,
     "senator_rank": SenatorRank,
     "senator_rank_label": SenatorRankLabel,
-    "startdate": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "startdate": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "state": S.String,
     "title": Title,
     "title_long": RoleTypeLabel,
