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..fa1217f 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 => { const date = value.slice(0, 10); const parsed = Date.parse(`${date}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().slice(0, 10) === date; })), 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..fbd7328 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 => { const date = value.slice(0, 10); const parsed = Date.parse(`${date}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().slice(0, 10) === date; })), 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 => { const parsed = Date.parse(`${value}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().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 => { const date = value.slice(0, 10); const parsed = Date.parse(`${date}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().slice(0, 10) === date; })),
+    "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 => { const parsed = Date.parse(`${value}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().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 => { const date = value.slice(0, 10); const parsed = Date.parse(`${date}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().slice(0, 10) === date; })), 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..f3299d4 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 => { const parsed = Date.parse(`${value}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().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 => { const date = value.slice(0, 10); const parsed = Date.parse(`${date}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().slice(0, 10) === date; }))),
+    "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 => { const parsed = Date.parse(`${value}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().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 => { const date = value.slice(0, 10); const parsed = Date.parse(`${date}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().slice(0, 10) === date; })),
+    "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-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..27cfa8c 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 => { const parsed = Date.parse(`${value}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().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..0ceedb9 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 => { const parsed = Date.parse(`${value}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().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..c0a10f5 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 => { const date = value.slice(0, 10); const parsed = Date.parse(`${date}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().slice(0, 10) === date; })),
     "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 => { const date = value.slice(0, 10); const parsed = Date.parse(`${date}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().slice(0, 10) === date; })),
     "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..494a3a6 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 => { const date = value.slice(0, 10); const parsed = Date.parse(`${date}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().slice(0, 10) === date; })),
     "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 => { const date = value.slice(0, 10); const parsed = Date.parse(`${date}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().slice(0, 10) === date; })),
     "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 => { const date = value.slice(0, 10); const parsed = Date.parse(`${date}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().slice(0, 10) === date; })),
     "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 => { const date = value.slice(0, 10); const parsed = Date.parse(`${date}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().slice(0, 10) === date; })),
     "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 => { const date = value.slice(0, 10); const parsed = Date.parse(`${date}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().slice(0, 10) === date; })),
     "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 => { const date = value.slice(0, 10); const parsed = Date.parse(`${date}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().slice(0, 10) === date; })),
     "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 => { const date = value.slice(0, 10); const parsed = Date.parse(`${date}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().slice(0, 10) === date; })),
     "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 => { const date = value.slice(0, 10); const parsed = Date.parse(`${date}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().slice(0, 10) === date; })),
     "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..8ed5287 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 => { const parsed = Date.parse(`${value}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().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..0ceedb9 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 => { const parsed = Date.parse(`${value}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().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..5a8a161 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 => { const date = value.slice(0, 10); const parsed = Date.parse(`${date}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().slice(0, 10) === date; })),
     "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..27cfa8c 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 => { const parsed = Date.parse(`${value}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().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..e3808a0 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 => { const parsed = Date.parse(`${value}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().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 => { const parsed = Date.parse(`${value}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().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 => { const parsed = Date.parse(`${value}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().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..fec8acc 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 => { const date = value.slice(0, 10); const parsed = Date.parse(`${date}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().slice(0, 10) === date; })),
     "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..267d7b6 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 => { const parsed = Date.parse(`${value}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().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 => { const parsed = Date.parse(`${value}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().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 => { const parsed = Date.parse(`${value}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().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..7db7d91 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 => { const parsed = Date.parse(`${value}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().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..bdbadcf 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 => { const date = value.slice(0, 10); const parsed = Date.parse(`${date}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().slice(0, 10) === date; }))),
     "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..070decd 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 => { const date = value.slice(0, 10); const parsed = Date.parse(`${date}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().slice(0, 10) === date; })),
     "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 => { const date = value.slice(0, 10); const parsed = Date.parse(`${date}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().slice(0, 10) === date; })),
     "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 => { const date = value.slice(0, 10); const parsed = Date.parse(`${date}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().slice(0, 10) === date; })),
     "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 => { const date = value.slice(0, 10); const parsed = Date.parse(`${date}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().slice(0, 10) === date; })),
     "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 => { const date = value.slice(0, 10); const parsed = Date.parse(`${date}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().slice(0, 10) === date; })),
     "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 => { const date = value.slice(0, 10); const parsed = Date.parse(`${date}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().slice(0, 10) === date; })),
     "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..c4452e4 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 => { const parsed = Date.parse(`${value}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().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 => { const parsed = Date.parse(`${value}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().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..27cfa8c 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 => { const parsed = Date.parse(`${value}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().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..19d6cb7 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 => { const date = value.slice(0, 10); const parsed = Date.parse(`${date}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().slice(0, 10) === date; })),
     "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..0ceedb9 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 => { const parsed = Date.parse(`${value}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().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..27cfa8c 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 => { const parsed = Date.parse(`${value}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().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..27cfa8c 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 => { const parsed = Date.parse(`${value}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().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..5a8a161 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 => { const date = value.slice(0, 10); const parsed = Date.parse(`${date}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().slice(0, 10) === date; })),
     "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..27cfa8c 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 => { const parsed = Date.parse(`${value}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().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..f9f4dc1 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 => { const date = value.slice(0, 10); const parsed = Date.parse(`${date}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().slice(0, 10) === date; })),
     "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 => { const date = value.slice(0, 10); const parsed = Date.parse(`${date}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().slice(0, 10) === date; })),
 }) {}
 
 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..08b4f88 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 => { const date = value.slice(0, 10); const parsed = Date.parse(`${date}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().slice(0, 10) === date; })),
     "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..0ceedb9 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 => { const parsed = Date.parse(`${value}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().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..0ceedb9 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 => { const parsed = Date.parse(`${value}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().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..7158ea6 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 => { const parsed = Date.parse(`${value}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().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 => { const parsed = Date.parse(`${value}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().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..67fc894 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 => { const date = value.slice(0, 10); const parsed = Date.parse(`${date}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().slice(0, 10) === date; })),
     "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..0ceedb9 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 => { const parsed = Date.parse(`${value}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().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..2e5fc0d 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 => { const date = value.slice(0, 10); const parsed = Date.parse(`${date}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().slice(0, 10) === date; })),
     "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 => { const date = value.slice(0, 10); const parsed = Date.parse(`${date}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().slice(0, 10) === date; })),
     "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 => { const date = value.slice(0, 10); const parsed = Date.parse(`${date}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().slice(0, 10) === date; })),
     "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 => { const date = value.slice(0, 10); const parsed = Date.parse(`${date}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().slice(0, 10) === date; })),
     "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..0ceedb9 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 => { const parsed = Date.parse(`${value}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().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..fe4f1b0 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 => { const date = value.slice(0, 10); const parsed = Date.parse(`${date}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().slice(0, 10) === date; })),
     "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..27cfa8c 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 => { const parsed = Date.parse(`${value}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().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..907ab28 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 => { const date = value.slice(0, 10); const parsed = Date.parse(`${date}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().slice(0, 10) === date; })),
     "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 => { const date = value.slice(0, 10); const parsed = Date.parse(`${date}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().slice(0, 10) === date; })),
     "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..3c3359c 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 => { const date = value.slice(0, 10); const parsed = Date.parse(`${date}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().slice(0, 10) === date; })),
     "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 => { const date = value.slice(0, 10); const parsed = Date.parse(`${date}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().slice(0, 10) === date; })),
     "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..5a8a161 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 => { const date = value.slice(0, 10); const parsed = Date.parse(`${date}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().slice(0, 10) === date; })),
     "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..27cfa8c 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 => { const parsed = Date.parse(`${value}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().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..0ceedb9 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 => { const parsed = Date.parse(`${value}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().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..5a8a161 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 => { const date = value.slice(0, 10); const parsed = Date.parse(`${date}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().slice(0, 10) === date; })),
     "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..9714713 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 => { const date = value.slice(0, 10); const parsed = Date.parse(`${date}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().slice(0, 10) === date; })),
     "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 => { const date = value.slice(0, 10); const parsed = Date.parse(`${date}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().slice(0, 10) === date; })),
     "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..95518b0 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 => { const parsed = Date.parse(`${value}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().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 => { const parsed = Date.parse(`${value}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().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 => { const parsed = Date.parse(`${value}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().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 => { const date = value.slice(0, 10); const parsed = Date.parse(`${date}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().slice(0, 10) === date; })),
     "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..5a8a161 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 => { const date = value.slice(0, 10); const parsed = Date.parse(`${date}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().slice(0, 10) === date; })),
     "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..0ceedb9 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 => { const parsed = Date.parse(`${value}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().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..27cfa8c 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 => { const parsed = Date.parse(`${value}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().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..0ceedb9 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 => { const parsed = Date.parse(`${value}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().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..8a79fed 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 => { const date = value.slice(0, 10); const parsed = Date.parse(`${date}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().slice(0, 10) === date; }))),
 }) {}
 
 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..27cfa8c 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 => { const parsed = Date.parse(`${value}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().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..27cfa8c 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 => { const parsed = Date.parse(`${value}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().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..0ceedb9 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 => { const parsed = Date.parse(`${value}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().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..5a8a161 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 => { const date = value.slice(0, 10); const parsed = Date.parse(`${date}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().slice(0, 10) === date; })),
     "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..0ceedb9 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 => { const parsed = Date.parse(`${value}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().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..27cfa8c 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 => { const parsed = Date.parse(`${value}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().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..60e34a0 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 => { const date = value.slice(0, 10); const parsed = Date.parse(`${date}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().slice(0, 10) === date; })),
     "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 => { const date = value.slice(0, 10); const parsed = Date.parse(`${date}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().slice(0, 10) === date; })),
     "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..01075e3 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 => { const date = value.slice(0, 10); const parsed = Date.parse(`${date}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().slice(0, 10) === date; })),
     "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..fe00d95 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 => { const parsed = Date.parse(`${value}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().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 => { const parsed = Date.parse(`${value}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().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..fe00d95 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 => { const parsed = Date.parse(`${value}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().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 => { const parsed = Date.parse(`${value}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().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..5a8a161 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 => { const date = value.slice(0, 10); const parsed = Date.parse(`${date}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().slice(0, 10) === date; })),
     "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..c7b27ac 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 => { const date = value.slice(0, 10); const parsed = Date.parse(`${date}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().slice(0, 10) === date; })),
     "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..4d30906 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 => { const date = value.slice(0, 10); const parsed = Date.parse(`${date}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().slice(0, 10) === date; }))),
+    "dueDate": S.NullOr(S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => { const parsed = Date.parse(`${value}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().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..56e9ac2 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 => { const parsed = Date.parse(`${value}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().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 => { const date = value.slice(0, 10); const parsed = Date.parse(`${date}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().slice(0, 10) === date; })),
     "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..c783f8e 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 => { const date = value.slice(0, 10); const parsed = Date.parse(`${date}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().slice(0, 10) === date; })),
 }) {}
 
 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..9f9198b 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 => { const date = value.slice(0, 10); const parsed = Date.parse(`${date}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().slice(0, 10) === date; })),
     "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 => { const date = value.slice(0, 10); const parsed = Date.parse(`${date}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().slice(0, 10) === date; })),
     "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 => { const date = value.slice(0, 10); const parsed = Date.parse(`${date}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().slice(0, 10) === date; })),
     "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 => { const date = value.slice(0, 10); const parsed = Date.parse(`${date}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().slice(0, 10) === date; })),
     "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 => { const date = value.slice(0, 10); const parsed = Date.parse(`${date}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().slice(0, 10) === date; })),
     "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 => { const date = value.slice(0, 10); const parsed = Date.parse(`${date}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().slice(0, 10) === date; })),
     "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 => { const date = value.slice(0, 10); const parsed = Date.parse(`${date}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().slice(0, 10) === date; })),
     "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 => { const date = value.slice(0, 10); const parsed = Date.parse(`${date}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().slice(0, 10) === date; })),
     "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 => { const date = value.slice(0, 10); const parsed = Date.parse(`${date}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().slice(0, 10) === date; })),
     "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 => { const date = value.slice(0, 10); const parsed = Date.parse(`${date}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().slice(0, 10) === date; })),
     "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 => { const date = value.slice(0, 10); const parsed = Date.parse(`${date}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().slice(0, 10) === date; }))),
     "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 => { const date = value.slice(0, 10); const parsed = Date.parse(`${date}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().slice(0, 10) === date; })),
     "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 => { const date = value.slice(0, 10); const parsed = Date.parse(`${date}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().slice(0, 10) === date; }))),
     "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 => { const date = value.slice(0, 10); const parsed = Date.parse(`${date}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().slice(0, 10) === date; })),
     "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 => { const date = value.slice(0, 10); const parsed = Date.parse(`${date}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().slice(0, 10) === date; })),
     "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 => { const date = value.slice(0, 10); const parsed = Date.parse(`${date}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().slice(0, 10) === date; })),
     "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..30cb76b 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 => { const date = value.slice(0, 10); const parsed = Date.parse(`${date}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().slice(0, 10) === date; }))),
     "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..ba439c1 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 => { const parsed = Date.parse(`${value}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().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 => { const parsed = Date.parse(`${value}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().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 => { const parsed = Date.parse(`${value}T00:00:00Z`); return parsed === parsed && new Date(parsed).toISOString().slice(0, 10) === value; })),
     "state": S.String,
     "title": Title,
     "title_long": RoleTypeLabel,
