diff --git a/base/schema-typescript-zod/test/inputs/schema/date-time-or-string.schema/default/TopLevel.ts b/head/schema-typescript-zod/test/inputs/schema/date-time-or-string.schema/default/TopLevel.ts
index db12fed..c36f43b 100644
--- a/base/schema-typescript-zod/test/inputs/schema/date-time-or-string.schema/default/TopLevel.ts
+++ b/head/schema-typescript-zod/test/inputs/schema/date-time-or-string.schema/default/TopLevel.ts
@@ -7,7 +7,7 @@ export const BarEnumSchema = z.enum([
 export type BarEnum = z.infer<typeof BarEnumSchema>;
 
 export const TopLevelSchema = z.object({
-    "bar": z.union([BarEnumSchema, z.string().pipe(z.coerce.date())]),
+    "bar": z.union([BarEnumSchema, z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success).pipe(z.coerce.date())]),
     "foo": z.string(),
 });
 export type TopLevel = z.infer<typeof TopLevelSchema>;
diff --git a/base/schema-typescript-zod/test/inputs/schema/date-time.schema/default/TopLevel.ts b/head/schema-typescript-zod/test/inputs/schema/date-time.schema/default/TopLevel.ts
index 7033fc8..21d6ea1 100644
--- a/base/schema-typescript-zod/test/inputs/schema/date-time.schema/default/TopLevel.ts
+++ b/head/schema-typescript-zod/test/inputs/schema/date-time.schema/default/TopLevel.ts
@@ -8,10 +8,10 @@ export const ComplexUnionArrayEnumSchema = z.enum([
 export type ComplexUnionArrayEnum = z.infer<typeof ComplexUnionArrayEnumSchema>;
 
 export const TopLevelSchema = z.object({
-    "complex-union-array": z.array(z.union([ComplexUnionArrayEnumSchema, z.number().int(), z.string().pipe(z.coerce.date())])),
-    "date": z.string(),
-    "date-time": z.string().pipe(z.coerce.date()),
-    "time": z.string(),
-    "union-array": z.array(z.string()),
+    "complex-union-array": z.array(z.union([ComplexUnionArrayEnumSchema, z.number().int(), z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success).pipe(z.coerce.date())])),
+    "date": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => { const parsed = Date.parse(`${value}T00:00:00Z`); return Number.isFinite(parsed) && new Date(parsed).toISOString().slice(0, 10) === value; }),
+    "date-time": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success).pipe(z.coerce.date()),
+    "time": z.string().regex(/^(?:[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": z.array(z.union([z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => { const parsed = Date.parse(`${value}T00:00:00Z`); return Number.isFinite(parsed) && new Date(parsed).toISOString().slice(0, 10) === value; }), z.string().regex(/^(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success).pipe(z.coerce.date())])),
 });
 export type TopLevel = z.infer<typeof TopLevelSchema>;
diff --git a/base/schema-typescript-zod/test/inputs/schema/optional-date-time.schema/default/TopLevel.ts b/head/schema-typescript-zod/test/inputs/schema/optional-date-time.schema/default/TopLevel.ts
index 502a52e..047eda0 100644
--- a/base/schema-typescript-zod/test/inputs/schema/optional-date-time.schema/default/TopLevel.ts
+++ b/head/schema-typescript-zod/test/inputs/schema/optional-date-time.schema/default/TopLevel.ts
@@ -2,11 +2,11 @@ import * as z from "zod";
 
 
 export const TopLevelSchema = z.object({
-    "optional-date": z.string().optional(),
-    "optional-date-time": z.string().pipe(z.coerce.date()).optional(),
-    "optional-time": z.string().optional(),
-    "required-date": z.string(),
-    "required-date-time": z.string().pipe(z.coerce.date()),
-    "required-time": z.string(),
+    "optional-date": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => { const parsed = Date.parse(`${value}T00:00:00Z`); return Number.isFinite(parsed) && new Date(parsed).toISOString().slice(0, 10) === value; }).optional(),
+    "optional-date-time": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success).pipe(z.coerce.date()).optional(),
+    "optional-time": z.string().regex(/^(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i).optional(),
+    "required-date": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => { const parsed = Date.parse(`${value}T00:00:00Z`); return Number.isFinite(parsed) && new Date(parsed).toISOString().slice(0, 10) === value; }),
+    "required-date-time": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success).pipe(z.coerce.date()),
+    "required-time": z.string().regex(/^(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i),
 });
 export type TopLevel = z.infer<typeof TopLevelSchema>;
diff --git a/base/typescript-zod/test/inputs/json/misc/016af.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/016af.json/default/TopLevel.ts
index 3c5684f..25c8165 100644
--- a/base/typescript-zod/test/inputs/json/misc/016af.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/016af.json/default/TopLevel.ts
@@ -2,7 +2,7 @@ import * as z from "zod";
 
 
 export const TotalPopulationSchema = z.object({
-    "date": z.string(),
+    "date": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => { const parsed = Date.parse(`${value}T00:00:00Z`); return Number.isFinite(parsed) && new Date(parsed).toISOString().slice(0, 10) === value; }),
     "population": z.number().int(),
 });
 export type TotalPopulation = z.infer<typeof TotalPopulationSchema>;
diff --git a/base/typescript-zod/test/inputs/json/misc/033b1.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/033b1.json/default/TopLevel.ts
index f170e37..54c2453 100644
--- a/base/typescript-zod/test/inputs/json/misc/033b1.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/033b1.json/default/TopLevel.ts
@@ -3,7 +3,7 @@ import * as z from "zod";
 
 export const TopLevelSchema = z.object({
     "base": z.string(),
-    "date": z.string(),
+    "date": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => { const parsed = Date.parse(`${value}T00:00:00Z`); return Number.isFinite(parsed) && new Date(parsed).toISOString().slice(0, 10) === value; }),
     "rates": z.record(z.string(), z.number()),
 });
 export type TopLevel = z.infer<typeof TopLevelSchema>;
diff --git a/base/typescript-zod/test/inputs/json/misc/0a358.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/0a358.json/default/TopLevel.ts
index 0895699..372943d 100644
--- a/base/typescript-zod/test/inputs/json/misc/0a358.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/0a358.json/default/TopLevel.ts
@@ -7,10 +7,10 @@ export type Facets = z.infer<typeof FacetsSchema>;
 
 export const ResultSchema = z.object({
     "code": z.string(),
-    "created_at": z.string().pipe(z.coerce.date()),
+    "created_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success).pipe(z.coerce.date()),
     "id": z.number().int(),
     "name": z.string(),
-    "updated_at": z.string().pipe(z.coerce.date()),
+    "updated_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success).pipe(z.coerce.date()),
     "uri": z.string(),
 });
 export type Result = z.infer<typeof ResultSchema>;
diff --git a/base/typescript-zod/test/inputs/json/misc/0a91a.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/0a91a.json/default/TopLevel.ts
index 48a93c4..c914488 100644
--- a/base/typescript-zod/test/inputs/json/misc/0a91a.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/0a91a.json/default/TopLevel.ts
@@ -80,7 +80,7 @@ export const BaseRepoSchema = z.object({
     "compare_url": z.string(),
     "contents_url": z.string(),
     "contributors_url": z.string(),
-    "created_at": z.string().pipe(z.coerce.date()),
+    "created_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success).pipe(z.coerce.date()),
     "default_branch": z.string(),
     "deployments_url": z.string(),
     "description": z.null(),
@@ -121,7 +121,7 @@ export const BaseRepoSchema = z.object({
     "owner": MergedBySchema,
     "private": z.boolean(),
     "pulls_url": z.string(),
-    "pushed_at": z.string().pipe(z.coerce.date()),
+    "pushed_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success).pipe(z.coerce.date()),
     "releases_url": z.string(),
     "size": z.number().int(),
     "ssh_url": z.string(),
@@ -134,7 +134,7 @@ export const BaseRepoSchema = z.object({
     "tags_url": z.string(),
     "teams_url": z.string(),
     "trees_url": z.string(),
-    "updated_at": z.string().pipe(z.coerce.date()),
+    "updated_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success).pipe(z.coerce.date()),
     "url": z.string(),
     "watchers": z.number().int(),
     "watchers_count": z.number().int(),
@@ -169,12 +169,12 @@ export const PullRequestSchema = z.object({
     "base": BaseSchema,
     "body": z.string(),
     "changed_files": z.number().int(),
-    "closed_at": z.string().pipe(z.coerce.date()),
+    "closed_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success).pipe(z.coerce.date()),
     "comments": z.number().int(),
     "comments_url": z.string(),
     "commits": z.number().int(),
     "commits_url": z.string(),
-    "created_at": z.string().pipe(z.coerce.date()),
+    "created_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success).pipe(z.coerce.date()),
     "deletions": z.number().int(),
     "diff_url": z.string(),
     "head": BaseSchema,
@@ -188,7 +188,7 @@ export const PullRequestSchema = z.object({
     "mergeable": z.null(),
     "mergeable_state": z.string(),
     "merged": z.boolean(),
-    "merged_at": z.string().pipe(z.coerce.date()),
+    "merged_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success).pipe(z.coerce.date()),
     "merged_by": MergedBySchema,
     "milestone": z.null(),
     "number": z.number().int(),
@@ -201,7 +201,7 @@ export const PullRequestSchema = z.object({
     "state": z.string(),
     "statuses_url": z.string(),
     "title": z.string(),
-    "updated_at": z.string().pipe(z.coerce.date()),
+    "updated_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success).pipe(z.coerce.date()),
     "url": z.string(),
     "user": MergedBySchema,
 });
@@ -227,7 +227,7 @@ export type Payload = z.infer<typeof PayloadSchema>;
 
 export const TopLevelElementSchema = z.object({
     "actor": ActorSchema,
-    "created_at": z.string().pipe(z.coerce.date()),
+    "created_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success).pipe(z.coerce.date()),
     "id": z.string(),
     "org": ActorSchema.optional(),
     "payload": PayloadSchema,
diff --git a/base/typescript-zod/test/inputs/json/misc/0e0c2.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/0e0c2.json/default/TopLevel.ts
index adb9482..048f93d 100644
--- a/base/typescript-zod/test/inputs/json/misc/0e0c2.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/0e0c2.json/default/TopLevel.ts
@@ -80,7 +80,7 @@ export const ResultSchema = z.object({
     "id": z.number().int(),
     "images": z.array(ImageSchema),
     "language": ResultLanguageSchema,
-    "release_date": z.string(),
+    "release_date": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => { const parsed = Date.parse(`${value}T00:00:00Z`); return Number.isFinite(parsed) && new Date(parsed).toISOString().slice(0, 10) === value; }),
     "stars": z.number().int(),
     "tags": z.union([z.null(), z.array(z.any())]),
     "title": z.string(),
diff --git a/base/typescript-zod/test/inputs/json/misc/167d6.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/167d6.json/default/TopLevel.ts
index f170e37..54c2453 100644
--- a/base/typescript-zod/test/inputs/json/misc/167d6.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/167d6.json/default/TopLevel.ts
@@ -3,7 +3,7 @@ import * as z from "zod";
 
 export const TopLevelSchema = z.object({
     "base": z.string(),
-    "date": z.string(),
+    "date": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => { const parsed = Date.parse(`${value}T00:00:00Z`); return Number.isFinite(parsed) && new Date(parsed).toISOString().slice(0, 10) === value; }),
     "rates": z.record(z.string(), z.number()),
 });
 export type TopLevel = z.infer<typeof TopLevelSchema>;
diff --git a/base/typescript-zod/test/inputs/json/misc/16bc5.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/16bc5.json/default/TopLevel.ts
index ddf9ef4..44e5525 100644
--- a/base/typescript-zod/test/inputs/json/misc/16bc5.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/16bc5.json/default/TopLevel.ts
@@ -106,7 +106,7 @@ export type Results = z.infer<typeof ResultsSchema>;
 
 export const QuerySchema = z.object({
     "count": z.number().int(),
-    "created": z.string().pipe(z.coerce.date()),
+    "created": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success).pipe(z.coerce.date()),
     "lang": z.string(),
     "results": ResultsSchema,
 });
diff --git a/base/typescript-zod/test/inputs/json/misc/1b28c.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/1b28c.json/default/TopLevel.ts
index 3c5684f..25c8165 100644
--- a/base/typescript-zod/test/inputs/json/misc/1b28c.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/1b28c.json/default/TopLevel.ts
@@ -2,7 +2,7 @@ import * as z from "zod";
 
 
 export const TotalPopulationSchema = z.object({
-    "date": z.string(),
+    "date": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => { const parsed = Date.parse(`${value}T00:00:00Z`); return Number.isFinite(parsed) && new Date(parsed).toISOString().slice(0, 10) === value; }),
     "population": z.number().int(),
 });
 export type TotalPopulation = z.infer<typeof TotalPopulationSchema>;
diff --git a/base/typescript-zod/test/inputs/json/misc/1b409.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/1b409.json/default/TopLevel.ts
index 39e2bf8..235e5db 100644
--- a/base/typescript-zod/test/inputs/json/misc/1b409.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/1b409.json/default/TopLevel.ts
@@ -70,7 +70,7 @@ export type Extra = z.infer<typeof ExtraSchema>;
 
 export const PersonSchema = z.object({
     "bioguideid": z.string(),
-    "birthday": z.string(),
+    "birthday": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => { const parsed = Date.parse(`${value}T00:00:00Z`); return Number.isFinite(parsed) && new Date(parsed).toISOString().slice(0, 10) === value; }),
     "cspanid": z.number().int(),
     "firstname": z.string(),
     "gender": GenderSchema,
@@ -96,7 +96,7 @@ export const ObjectElementSchema = z.object({
     "current": z.boolean(),
     "description": z.string(),
     "district": z.number().int(),
-    "enddate": z.string(),
+    "enddate": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => { const parsed = Date.parse(`${value}T00:00:00Z`); return Number.isFinite(parsed) && new Date(parsed).toISOString().slice(0, 10) === value; }),
     "extra": ExtraSchema,
     "id": z.number().int(),
     "leadership_title": z.union([z.null(), z.string()]),
@@ -107,7 +107,7 @@ export const ObjectElementSchema = z.object({
     "role_type_label": RoleTypeLabelSchema,
     "senator_class": z.null(),
     "senator_rank": z.null(),
-    "startdate": z.string(),
+    "startdate": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => { const parsed = Date.parse(`${value}T00:00:00Z`); return Number.isFinite(parsed) && new Date(parsed).toISOString().slice(0, 10) === value; }),
     "state": z.string(),
     "title": TitleSchema,
     "title_long": RoleTypeLabelSchema,
diff --git a/base/typescript-zod/test/inputs/json/misc/262f0.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/262f0.json/default/TopLevel.ts
index 7b65d99..4452f69 100644
--- a/base/typescript-zod/test/inputs/json/misc/262f0.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/262f0.json/default/TopLevel.ts
@@ -113,7 +113,7 @@ export type Results = z.infer<typeof ResultsSchema>;
 
 export const QuerySchema = z.object({
     "count": z.number().int(),
-    "created": z.string().pipe(z.coerce.date()),
+    "created": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success).pipe(z.coerce.date()),
     "lang": z.string(),
     "results": ResultsSchema,
 });
diff --git a/base/typescript-zod/test/inputs/json/misc/2d4e2.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/2d4e2.json/default/TopLevel.ts
index 0deef1f..2c58ce7 100644
--- a/base/typescript-zod/test/inputs/json/misc/2d4e2.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/2d4e2.json/default/TopLevel.ts
@@ -96,7 +96,7 @@ export type Extra = z.infer<typeof ExtraSchema>;
 
 export const PersonSchema = z.object({
     "bioguideid": z.string(),
-    "birthday": z.string(),
+    "birthday": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => { const parsed = Date.parse(`${value}T00:00:00Z`); return Number.isFinite(parsed) && new Date(parsed).toISOString().slice(0, 10) === value; }),
     "cspanid": z.number().int(),
     "firstname": z.string(),
     "gender": GenderSchema,
@@ -122,7 +122,7 @@ export const ObjectElementSchema = z.object({
     "current": z.boolean(),
     "description": z.string(),
     "district": z.null(),
-    "enddate": z.string(),
+    "enddate": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => { const parsed = Date.parse(`${value}T00:00:00Z`); return Number.isFinite(parsed) && new Date(parsed).toISOString().slice(0, 10) === value; }),
     "extra": ExtraSchema,
     "id": z.number().int(),
     "leadership_title": z.union([z.null(), z.string()]),
@@ -135,7 +135,7 @@ export const ObjectElementSchema = z.object({
     "senator_class_label": SenatorClassLabelSchema,
     "senator_rank": SenatorRankSchema,
     "senator_rank_label": SenatorRankLabelSchema,
-    "startdate": z.string(),
+    "startdate": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => { const parsed = Date.parse(`${value}T00:00:00Z`); return Number.isFinite(parsed) && new Date(parsed).toISOString().slice(0, 10) === value; }),
     "state": z.string(),
     "title": TitleSchema,
     "title_long": RoleTypeLabelSchema,
diff --git a/base/typescript-zod/test/inputs/json/misc/31189.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/31189.json/default/TopLevel.ts
index a7a72ec..e8759ca 100644
--- a/base/typescript-zod/test/inputs/json/misc/31189.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/31189.json/default/TopLevel.ts
@@ -1,6 +1,11 @@
 import * as z from "zod";
 
 
+export const EffectiveFromEnumSchema = z.enum([
+    "0000-01-01",
+]);
+export type EffectiveFromEnum = z.infer<typeof EffectiveFromEnumSchema>;
+
 export const RatesSchema = z.object({
     "parking": z.number().optional(),
     "reduced": z.number().optional(),
@@ -12,7 +17,7 @@ export const RatesSchema = z.object({
 export type Rates = z.infer<typeof RatesSchema>;
 
 export const PeriodSchema = z.object({
-    "effective_from": z.string(),
+    "effective_from": z.union([z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => { const parsed = Date.parse(`${value}T00:00:00Z`); return Number.isFinite(parsed) && new Date(parsed).toISOString().slice(0, 10) === value; }), EffectiveFromEnumSchema]),
     "rates": RatesSchema,
 });
 export type Period = z.infer<typeof PeriodSchema>;
diff --git a/base/typescript-zod/test/inputs/json/misc/32d5c.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/32d5c.json/default/TopLevel.ts
index 10502b1..d5cb07f 100644
--- a/base/typescript-zod/test/inputs/json/misc/32d5c.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/32d5c.json/default/TopLevel.ts
@@ -2,7 +2,7 @@ import * as z from "zod";
 
 
 export const TopLevelElementSchema = z.object({
-    "BirthDate": z.union([z.null(), z.string().pipe(z.coerce.date())]),
+    "BirthDate": z.union([z.null(), z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success).pipe(z.coerce.date())]),
     "BirthDateIsProtected": z.boolean(),
     "GenderTypeID": z.number().int(),
     "Notes": z.string(),
diff --git a/base/typescript-zod/test/inputs/json/misc/337ed.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/337ed.json/default/TopLevel.ts
index 1c59915..bfa4743 100644
--- a/base/typescript-zod/test/inputs/json/misc/337ed.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/337ed.json/default/TopLevel.ts
@@ -28,12 +28,12 @@ export type Facets = z.infer<typeof FacetsSchema>;
 
 export const CustomIncomeSchema = z.object({
     "amount": z.number().int(),
-    "created_at": z.string().pipe(z.coerce.date()),
+    "created_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success).pipe(z.coerce.date()),
     "id": z.string(),
     "name": z.string(),
     "status": StatusSchema,
     "type": CustomIncomeTypeSchema,
-    "updated_at": z.string().pipe(z.coerce.date()),
+    "updated_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success).pipe(z.coerce.date()),
     "uri": z.string(),
 });
 export type CustomIncome = z.infer<typeof CustomIncomeSchema>;
@@ -42,11 +42,11 @@ export const ResultSchema = z.object({
     "cost_absolute": z.union([z.null(), z.number().int()]),
     "cost_max": z.union([z.null(), z.number().int()]),
     "cost_min": z.union([z.null(), z.number().int()]),
-    "created_at": z.string().pipe(z.coerce.date()),
+    "created_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success).pipe(z.coerce.date()),
     "customIncomes": z.array(CustomIncomeSchema),
     "direct_rep_costs_max": z.null(),
     "direct_rep_costs_min": z.null(),
-    "end_date": z.string().pipe(z.coerce.date()),
+    "end_date": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success).pipe(z.coerce.date()),
     "eur_sources_grants": z.number().int(),
     "eur_sources_grants_src": z.union([z.null(), z.string()]),
     "eur_sources_procurement": z.number().int(),
@@ -62,14 +62,14 @@ export const ResultSchema = z.object({
     "public_financing_national": z.union([z.null(), z.number().int()]),
     "public_financing_total": z.union([z.null(), z.number().int()]),
     "representative": z.string(),
-    "start_date": z.string().pipe(z.coerce.date()),
+    "start_date": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success).pipe(z.coerce.date()),
     "status": StatusSchema,
     "total_budget": z.union([z.null(), z.number().int()]),
     "turnover_absolute": z.union([z.null(), z.number().int()]),
     "turnover_max": z.union([z.null(), z.number().int()]),
     "turnover_min": z.union([z.null(), z.number().int()]),
     "type": ResultTypeSchema,
-    "updated_at": z.string().pipe(z.coerce.date()),
+    "updated_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success).pipe(z.coerce.date()),
     "uri": z.string(),
 });
 export type Result = z.infer<typeof ResultSchema>;
diff --git a/base/typescript-zod/test/inputs/json/misc/33d2e.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/33d2e.json/default/TopLevel.ts
index bc6817f..3dbce9e 100644
--- a/base/typescript-zod/test/inputs/json/misc/33d2e.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/33d2e.json/default/TopLevel.ts
@@ -1,6 +1,14 @@
 import * as z from "zod";
 
 
+export const BornEnumSchema = z.enum([
+    "0000-00-00",
+    "1898-00-00",
+    "1943-00-00",
+]);
+export type BornEnum = z.infer<typeof BornEnumSchema>;
+
+
 export const GenderSchema = z.enum([
     "male",
     "female",
@@ -37,11 +45,11 @@ export const PrizeSchema = z.object({
 export type Prize = z.infer<typeof PrizeSchema>;
 
 export const LaureateSchema = z.object({
-    "born": z.string(),
+    "born": z.union([z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => { const parsed = Date.parse(`${value}T00:00:00Z`); return Number.isFinite(parsed) && new Date(parsed).toISOString().slice(0, 10) === value; }), BornEnumSchema]),
     "bornCity": z.string().optional(),
     "bornCountry": z.string().optional(),
     "bornCountryCode": z.string().optional(),
-    "died": z.string(),
+    "died": z.union([z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => { const parsed = Date.parse(`${value}T00:00:00Z`); return Number.isFinite(parsed) && new Date(parsed).toISOString().slice(0, 10) === value; }), BornEnumSchema]),
     "diedCity": z.string().optional(),
     "diedCountry": z.string().optional(),
     "diedCountryCode": z.string().optional(),
diff --git a/base/typescript-zod/test/inputs/json/misc/3659d.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/3659d.json/default/TopLevel.ts
index 3c5684f..25c8165 100644
--- a/base/typescript-zod/test/inputs/json/misc/3659d.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/3659d.json/default/TopLevel.ts
@@ -2,7 +2,7 @@ import * as z from "zod";
 
 
 export const TotalPopulationSchema = z.object({
-    "date": z.string(),
+    "date": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => { const parsed = Date.parse(`${value}T00:00:00Z`); return Number.isFinite(parsed) && new Date(parsed).toISOString().slice(0, 10) === value; }),
     "population": z.number().int(),
 });
 export type TotalPopulation = z.infer<typeof TotalPopulationSchema>;
diff --git a/base/typescript-zod/test/inputs/json/misc/3f1ce.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/3f1ce.json/default/TopLevel.ts
index ae35dfa..8fbf09a 100644
--- a/base/typescript-zod/test/inputs/json/misc/3f1ce.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/3f1ce.json/default/TopLevel.ts
@@ -111,7 +111,7 @@ export type Results = z.infer<typeof ResultsSchema>;
 
 export const QuerySchema = z.object({
     "count": z.number().int(),
-    "created": z.string().pipe(z.coerce.date()),
+    "created": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success).pipe(z.coerce.date()),
     "lang": z.string(),
     "results": ResultsSchema,
 });
diff --git a/base/typescript-zod/test/inputs/json/misc/43eaf.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/43eaf.json/default/TopLevel.ts
index f170e37..54c2453 100644
--- a/base/typescript-zod/test/inputs/json/misc/43eaf.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/43eaf.json/default/TopLevel.ts
@@ -3,7 +3,7 @@ import * as z from "zod";
 
 export const TopLevelSchema = z.object({
     "base": z.string(),
-    "date": z.string(),
+    "date": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => { const parsed = Date.parse(`${value}T00:00:00Z`); return Number.isFinite(parsed) && new Date(parsed).toISOString().slice(0, 10) === value; }),
     "rates": z.record(z.string(), z.number()),
 });
 export type TopLevel = z.infer<typeof TopLevelSchema>;
diff --git a/base/typescript-zod/test/inputs/json/misc/4961a.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/4961a.json/default/TopLevel.ts
index 3c5684f..25c8165 100644
--- a/base/typescript-zod/test/inputs/json/misc/4961a.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/4961a.json/default/TopLevel.ts
@@ -2,7 +2,7 @@ import * as z from "zod";
 
 
 export const TotalPopulationSchema = z.object({
-    "date": z.string(),
+    "date": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => { const parsed = Date.parse(`${value}T00:00:00Z`); return Number.isFinite(parsed) && new Date(parsed).toISOString().slice(0, 10) === value; }),
     "population": z.number().int(),
 });
 export type TotalPopulation = z.infer<typeof TotalPopulationSchema>;
diff --git a/base/typescript-zod/test/inputs/json/misc/4a0d7.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/4a0d7.json/default/TopLevel.ts
index 3c5684f..25c8165 100644
--- a/base/typescript-zod/test/inputs/json/misc/4a0d7.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/4a0d7.json/default/TopLevel.ts
@@ -2,7 +2,7 @@ import * as z from "zod";
 
 
 export const TotalPopulationSchema = z.object({
-    "date": z.string(),
+    "date": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => { const parsed = Date.parse(`${value}T00:00:00Z`); return Number.isFinite(parsed) && new Date(parsed).toISOString().slice(0, 10) === value; }),
     "population": z.number().int(),
 });
 export type TotalPopulation = z.infer<typeof TotalPopulationSchema>;
diff --git a/base/typescript-zod/test/inputs/json/misc/4c547.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/4c547.json/default/TopLevel.ts
index ddf9ef4..44e5525 100644
--- a/base/typescript-zod/test/inputs/json/misc/4c547.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/4c547.json/default/TopLevel.ts
@@ -106,7 +106,7 @@ export type Results = z.infer<typeof ResultsSchema>;
 
 export const QuerySchema = z.object({
     "count": z.number().int(),
-    "created": z.string().pipe(z.coerce.date()),
+    "created": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success).pipe(z.coerce.date()),
     "lang": z.string(),
     "results": ResultsSchema,
 });
diff --git a/base/typescript-zod/test/inputs/json/misc/4e336.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/4e336.json/default/TopLevel.ts
index 3c5684f..25c8165 100644
--- a/base/typescript-zod/test/inputs/json/misc/4e336.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/4e336.json/default/TopLevel.ts
@@ -2,7 +2,7 @@ import * as z from "zod";
 
 
 export const TotalPopulationSchema = z.object({
-    "date": z.string(),
+    "date": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => { const parsed = Date.parse(`${value}T00:00:00Z`); return Number.isFinite(parsed) && new Date(parsed).toISOString().slice(0, 10) === value; }),
     "population": z.number().int(),
 });
 export type TotalPopulation = z.infer<typeof TotalPopulationSchema>;
diff --git a/base/typescript-zod/test/inputs/json/misc/54d32.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/54d32.json/default/TopLevel.ts
index 49820db..7253ba5 100644
--- a/base/typescript-zod/test/inputs/json/misc/54d32.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/54d32.json/default/TopLevel.ts
@@ -12,12 +12,12 @@ export const FacetsSchema = z.object({
 export type Facets = z.infer<typeof FacetsSchema>;
 
 export const ResultSchema = z.object({
-    "created_at": z.string().pipe(z.coerce.date()),
+    "created_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success).pipe(z.coerce.date()),
     "id": z.string(),
     "person_id": z.string(),
     "representative_id": z.string(),
     "status": StatusSchema,
-    "updated_at": z.string().pipe(z.coerce.date()),
+    "updated_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success).pipe(z.coerce.date()),
 });
 export type Result = z.infer<typeof ResultSchema>;
 
diff --git a/base/typescript-zod/test/inputs/json/misc/5eae5.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/5eae5.json/default/TopLevel.ts
index 80379a4..1ddfa34 100644
--- a/base/typescript-zod/test/inputs/json/misc/5eae5.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/5eae5.json/default/TopLevel.ts
@@ -2,7 +2,7 @@ import * as z from "zod";
 
 
 export const TopLevelElementSchema = z.object({
-    "Date": z.string().pipe(z.coerce.date()),
+    "Date": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success).pipe(z.coerce.date()),
     "ID": z.number().int(),
     "Sponsor": z.string(),
     "Title": z.string(),
diff --git a/base/typescript-zod/test/inputs/json/misc/5f3a1.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/5f3a1.json/default/TopLevel.ts
index f170e37..54c2453 100644
--- a/base/typescript-zod/test/inputs/json/misc/5f3a1.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/5f3a1.json/default/TopLevel.ts
@@ -3,7 +3,7 @@ import * as z from "zod";
 
 export const TopLevelSchema = z.object({
     "base": z.string(),
-    "date": z.string(),
+    "date": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => { const parsed = Date.parse(`${value}T00:00:00Z`); return Number.isFinite(parsed) && new Date(parsed).toISOString().slice(0, 10) === value; }),
     "rates": z.record(z.string(), z.number()),
 });
 export type TopLevel = z.infer<typeof TopLevelSchema>;
diff --git a/base/typescript-zod/test/inputs/json/misc/6260a.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/6260a.json/default/TopLevel.ts
index f170e37..54c2453 100644
--- a/base/typescript-zod/test/inputs/json/misc/6260a.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/6260a.json/default/TopLevel.ts
@@ -3,7 +3,7 @@ import * as z from "zod";
 
 export const TopLevelSchema = z.object({
     "base": z.string(),
-    "date": z.string(),
+    "date": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => { const parsed = Date.parse(`${value}T00:00:00Z`); return Number.isFinite(parsed) && new Date(parsed).toISOString().slice(0, 10) === value; }),
     "rates": z.record(z.string(), z.number()),
 });
 export type TopLevel = z.infer<typeof TopLevelSchema>;
diff --git a/base/typescript-zod/test/inputs/json/misc/65dec.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/65dec.json/default/TopLevel.ts
index 630e3b8..fc10dc1 100644
--- a/base/typescript-zod/test/inputs/json/misc/65dec.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/65dec.json/default/TopLevel.ts
@@ -61,7 +61,7 @@ export const LegalityElementSchema = z.object({
 export type LegalityElement = z.infer<typeof LegalityElementSchema>;
 
 export const RulingSchema = z.object({
-    "date": z.string(),
+    "date": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => { const parsed = Date.parse(`${value}T00:00:00Z`); return Number.isFinite(parsed) && new Date(parsed).toISOString().slice(0, 10) === value; }),
     "text": z.string(),
 });
 export type Ruling = z.infer<typeof RulingSchema>;
@@ -108,7 +108,7 @@ export const TopLevelSchema = z.object({
     "mkm_id": z.number().int(),
     "mkm_name": z.string(),
     "name": z.string(),
-    "releaseDate": z.string(),
+    "releaseDate": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => { const parsed = Date.parse(`${value}T00:00:00Z`); return Number.isFinite(parsed) && new Date(parsed).toISOString().slice(0, 10) === value; }),
     "type": z.string(),
 });
 export type TopLevel = z.infer<typeof TopLevelSchema>;
diff --git a/base/typescript-zod/test/inputs/json/misc/6dec6.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/6dec6.json/default/TopLevel.ts
index 9007029..4ad6370 100644
--- a/base/typescript-zod/test/inputs/json/misc/6dec6.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/6dec6.json/default/TopLevel.ts
@@ -113,7 +113,7 @@ export type Results = z.infer<typeof ResultsSchema>;
 
 export const QuerySchema = z.object({
     "count": z.number().int(),
-    "created": z.string().pipe(z.coerce.date()),
+    "created": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success).pipe(z.coerce.date()),
     "lang": z.string(),
     "results": ResultsSchema,
 });
diff --git a/base/typescript-zod/test/inputs/json/misc/70c77.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/70c77.json/default/TopLevel.ts
index f170e37..54c2453 100644
--- a/base/typescript-zod/test/inputs/json/misc/70c77.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/70c77.json/default/TopLevel.ts
@@ -3,7 +3,7 @@ import * as z from "zod";
 
 export const TopLevelSchema = z.object({
     "base": z.string(),
-    "date": z.string(),
+    "date": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => { const parsed = Date.parse(`${value}T00:00:00Z`); return Number.isFinite(parsed) && new Date(parsed).toISOString().slice(0, 10) === value; }),
     "rates": z.record(z.string(), z.number()),
 });
 export type TopLevel = z.infer<typeof TopLevelSchema>;
diff --git a/base/typescript-zod/test/inputs/json/misc/734ad.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/734ad.json/default/TopLevel.ts
index 6438db2..62ed817 100644
--- a/base/typescript-zod/test/inputs/json/misc/734ad.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/734ad.json/default/TopLevel.ts
@@ -31,7 +31,7 @@ export const ResultSchema = z.object({
     "be_office_town": z.string().optional(),
     "code_of_conduct": z.string(),
     "contact_country": z.number().int(),
-    "created_at": z.string().pipe(z.coerce.date()),
+    "created_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success).pipe(z.coerce.date()),
     "entity": z.string(),
     "goals": z.string(),
     "head": z.string(),
@@ -46,7 +46,7 @@ export const ResultSchema = z.object({
     "id": z.string(),
     "identification_code": z.string(),
     "info_members": z.string(),
-    "last_update_date": z.string().pipe(z.coerce.date()),
+    "last_update_date": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success).pipe(z.coerce.date()),
     "legal": z.string(),
     "legal_status": z.string(),
     "main_category": z.number().int(),
@@ -62,12 +62,12 @@ export const ResultSchema = z.object({
     "networking": z.union([z.null(), z.string()]),
     "number_of_natural_persons": z.union([z.null(), z.number().int()]),
     "other_code_of_conduct": z.union([z.null(), z.string()]),
-    "registration_date": z.string().pipe(z.coerce.date()),
+    "registration_date": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success).pipe(z.coerce.date()),
     "status": StatusSchema,
     "structure_members": z.string(),
     "sub_category": z.number().int(),
     "sub_category_title": z.string(),
-    "updated_at": z.string().pipe(z.coerce.date()),
+    "updated_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success).pipe(z.coerce.date()),
     "uri": z.string(),
     "web_site_url": z.union([z.null(), z.string()]),
 });
diff --git a/base/typescript-zod/test/inputs/json/misc/75912.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/75912.json/default/TopLevel.ts
index f170e37..54c2453 100644
--- a/base/typescript-zod/test/inputs/json/misc/75912.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/75912.json/default/TopLevel.ts
@@ -3,7 +3,7 @@ import * as z from "zod";
 
 export const TopLevelSchema = z.object({
     "base": z.string(),
-    "date": z.string(),
+    "date": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => { const parsed = Date.parse(`${value}T00:00:00Z`); return Number.isFinite(parsed) && new Date(parsed).toISOString().slice(0, 10) === value; }),
     "rates": z.record(z.string(), z.number()),
 });
 export type TopLevel = z.infer<typeof TopLevelSchema>;
diff --git a/base/typescript-zod/test/inputs/json/misc/77392.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/77392.json/default/TopLevel.ts
index 7a85c82..8b96bec 100644
--- a/base/typescript-zod/test/inputs/json/misc/77392.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/77392.json/default/TopLevel.ts
@@ -24,7 +24,7 @@ export type Pha = z.infer<typeof PhaSchema>;
 
 export const TopLevelElementSchema = z.object({
     "designation": z.string(),
-    "discovery_date": z.string().pipe(z.coerce.date()),
+    "discovery_date": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success).pipe(z.coerce.date()),
     "h_mag": z.string().optional(),
     "i_deg": z.string(),
     "moid_au": z.string(),
diff --git a/base/typescript-zod/test/inputs/json/misc/7dfa6.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/7dfa6.json/default/TopLevel.ts
index 3c5684f..25c8165 100644
--- a/base/typescript-zod/test/inputs/json/misc/7dfa6.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/7dfa6.json/default/TopLevel.ts
@@ -2,7 +2,7 @@ import * as z from "zod";
 
 
 export const TotalPopulationSchema = z.object({
-    "date": z.string(),
+    "date": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => { const parsed = Date.parse(`${value}T00:00:00Z`); return Number.isFinite(parsed) && new Date(parsed).toISOString().slice(0, 10) === value; }),
     "population": z.number().int(),
 });
 export type TotalPopulation = z.infer<typeof TotalPopulationSchema>;
diff --git a/base/typescript-zod/test/inputs/json/misc/7f568.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/7f568.json/default/TopLevel.ts
index a157d4f..834c514 100644
--- a/base/typescript-zod/test/inputs/json/misc/7f568.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/7f568.json/default/TopLevel.ts
@@ -25,7 +25,7 @@ export const TopLevelElementSchema = z.object({
     "comments": z.number().int(),
     "comments_url": z.string(),
     "commits_url": z.string(),
-    "created_at": z.string().pipe(z.coerce.date()),
+    "created_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success).pipe(z.coerce.date()),
     "description": z.union([z.null(), z.string()]),
     "files": z.record(z.string(), FileSchema),
     "forks_url": z.string(),
@@ -35,7 +35,7 @@ export const TopLevelElementSchema = z.object({
     "id": z.string(),
     "public": z.boolean(),
     "truncated": z.boolean(),
-    "updated_at": z.string().pipe(z.coerce.date()),
+    "updated_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success).pipe(z.coerce.date()),
     "url": z.string(),
     "user": z.null(),
 });
diff --git a/base/typescript-zod/test/inputs/json/misc/80aff.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/80aff.json/default/TopLevel.ts
index 5cd1f0e..7a3d151 100644
--- a/base/typescript-zod/test/inputs/json/misc/80aff.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/80aff.json/default/TopLevel.ts
@@ -6,12 +6,12 @@ export const FacetsSchema = z.object({
 export type Facets = z.infer<typeof FacetsSchema>;
 
 export const ResultSchema = z.object({
-    "created_at": z.string().pipe(z.coerce.date()),
+    "created_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success).pipe(z.coerce.date()),
     "id": z.number().int(),
     "items": z.number().int(),
     "name": z.string(),
     "parent": z.union([z.null(), z.number().int()]),
-    "updated_at": z.string().pipe(z.coerce.date()),
+    "updated_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success).pipe(z.coerce.date()),
     "uri": z.string(),
 });
 export type Result = z.infer<typeof ResultSchema>;
diff --git a/base/typescript-zod/test/inputs/json/misc/88130.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/88130.json/default/TopLevel.ts
index ddf9ef4..44e5525 100644
--- a/base/typescript-zod/test/inputs/json/misc/88130.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/88130.json/default/TopLevel.ts
@@ -106,7 +106,7 @@ export type Results = z.infer<typeof ResultsSchema>;
 
 export const QuerySchema = z.object({
     "count": z.number().int(),
-    "created": z.string().pipe(z.coerce.date()),
+    "created": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success).pipe(z.coerce.date()),
     "lang": z.string(),
     "results": ResultsSchema,
 });
diff --git a/base/typescript-zod/test/inputs/json/misc/8a62c.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/8a62c.json/default/TopLevel.ts
index 3c5684f..25c8165 100644
--- a/base/typescript-zod/test/inputs/json/misc/8a62c.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/8a62c.json/default/TopLevel.ts
@@ -2,7 +2,7 @@ import * as z from "zod";
 
 
 export const TotalPopulationSchema = z.object({
-    "date": z.string(),
+    "date": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => { const parsed = Date.parse(`${value}T00:00:00Z`); return Number.isFinite(parsed) && new Date(parsed).toISOString().slice(0, 10) === value; }),
     "population": z.number().int(),
 });
 export type TotalPopulation = z.infer<typeof TotalPopulationSchema>;
diff --git a/base/typescript-zod/test/inputs/json/misc/9617f.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/9617f.json/default/TopLevel.ts
index f170e37..54c2453 100644
--- a/base/typescript-zod/test/inputs/json/misc/9617f.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/9617f.json/default/TopLevel.ts
@@ -3,7 +3,7 @@ import * as z from "zod";
 
 export const TopLevelSchema = z.object({
     "base": z.string(),
-    "date": z.string(),
+    "date": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => { const parsed = Date.parse(`${value}T00:00:00Z`); return Number.isFinite(parsed) && new Date(parsed).toISOString().slice(0, 10) === value; }),
     "rates": z.record(z.string(), z.number()),
 });
 export type TopLevel = z.infer<typeof TopLevelSchema>;
diff --git a/base/typescript-zod/test/inputs/json/misc/9929c.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/9929c.json/default/TopLevel.ts
index ddf9ef4..44e5525 100644
--- a/base/typescript-zod/test/inputs/json/misc/9929c.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/9929c.json/default/TopLevel.ts
@@ -106,7 +106,7 @@ export type Results = z.infer<typeof ResultsSchema>;
 
 export const QuerySchema = z.object({
     "count": z.number().int(),
-    "created": z.string().pipe(z.coerce.date()),
+    "created": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success).pipe(z.coerce.date()),
     "lang": z.string(),
     "results": ResultsSchema,
 });
diff --git a/base/typescript-zod/test/inputs/json/misc/9ac3b.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/9ac3b.json/default/TopLevel.ts
index 2c57a9c..942c26c 100644
--- a/base/typescript-zod/test/inputs/json/misc/9ac3b.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/9ac3b.json/default/TopLevel.ts
@@ -19,7 +19,7 @@ export const FacetsSchema = z.object({
 export type Facets = z.infer<typeof FacetsSchema>;
 
 export const ResultSchema = z.object({
-    "created_at": z.string().pipe(z.coerce.date()),
+    "created_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success).pipe(z.coerce.date()),
     "entity": z.string(),
     "first_name": z.string(),
     "id": z.string(),
@@ -28,7 +28,7 @@ export const ResultSchema = z.object({
     "position": z.union([z.null(), z.string()]),
     "status": StatusSchema,
     "title": z.union([z.null(), TitleSchema]),
-    "updated_at": z.string().pipe(z.coerce.date()),
+    "updated_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success).pipe(z.coerce.date()),
     "uri": z.string(),
 });
 export type Result = z.infer<typeof ResultSchema>;
diff --git a/base/typescript-zod/test/inputs/json/misc/a0496.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/a0496.json/default/TopLevel.ts
index 922d483..efbc7fa 100644
--- a/base/typescript-zod/test/inputs/json/misc/a0496.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/a0496.json/default/TopLevel.ts
@@ -8,20 +8,20 @@ export type Errors = z.infer<typeof ErrorsSchema>;
 export const TopLevelSchema = z.object({
     "code": z.string(),
     "column_names": z.array(z.string()),
-    "data": z.array(z.array(z.union([z.null(), z.number(), z.string()]))),
+    "data": z.array(z.array(z.union([z.null(), z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => { const parsed = Date.parse(`${value}T00:00:00Z`); return Number.isFinite(parsed) && new Date(parsed).toISOString().slice(0, 10) === value; }), z.number()]))),
     "description": z.string(),
     "display_url": z.string(),
     "errors": ErrorsSchema,
     "frequency": z.string(),
-    "from_date": z.string(),
+    "from_date": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => { const parsed = Date.parse(`${value}T00:00:00Z`); return Number.isFinite(parsed) && new Date(parsed).toISOString().slice(0, 10) === value; }),
     "id": z.number().int(),
     "name": z.string(),
     "premium": z.boolean(),
     "source_code": z.string(),
     "source_name": z.string(),
-    "to_date": z.string(),
+    "to_date": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => { const parsed = Date.parse(`${value}T00:00:00Z`); return Number.isFinite(parsed) && new Date(parsed).toISOString().slice(0, 10) === value; }),
     "type": z.string(),
-    "updated_at": z.string().pipe(z.coerce.date()),
+    "updated_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success).pipe(z.coerce.date()),
     "urlize_name": z.string(),
 });
 export type TopLevel = z.infer<typeof TopLevelSchema>;
diff --git a/base/typescript-zod/test/inputs/json/misc/a1eca.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/a1eca.json/default/TopLevel.ts
index ddf9ef4..44e5525 100644
--- a/base/typescript-zod/test/inputs/json/misc/a1eca.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/a1eca.json/default/TopLevel.ts
@@ -106,7 +106,7 @@ export type Results = z.infer<typeof ResultsSchema>;
 
 export const QuerySchema = z.object({
     "count": z.number().int(),
-    "created": z.string().pipe(z.coerce.date()),
+    "created": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success).pipe(z.coerce.date()),
     "lang": z.string(),
     "results": ResultsSchema,
 });
diff --git a/base/typescript-zod/test/inputs/json/misc/a9691.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/a9691.json/default/TopLevel.ts
index f170e37..54c2453 100644
--- a/base/typescript-zod/test/inputs/json/misc/a9691.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/a9691.json/default/TopLevel.ts
@@ -3,7 +3,7 @@ import * as z from "zod";
 
 export const TopLevelSchema = z.object({
     "base": z.string(),
-    "date": z.string(),
+    "date": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => { const parsed = Date.parse(`${value}T00:00:00Z`); return Number.isFinite(parsed) && new Date(parsed).toISOString().slice(0, 10) === value; }),
     "rates": z.record(z.string(), z.number()),
 });
 export type TopLevel = z.infer<typeof TopLevelSchema>;
diff --git a/base/typescript-zod/test/inputs/json/misc/abb4b.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/abb4b.json/default/TopLevel.ts
index 3c5684f..25c8165 100644
--- a/base/typescript-zod/test/inputs/json/misc/abb4b.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/abb4b.json/default/TopLevel.ts
@@ -2,7 +2,7 @@ import * as z from "zod";
 
 
 export const TotalPopulationSchema = z.object({
-    "date": z.string(),
+    "date": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => { const parsed = Date.parse(`${value}T00:00:00Z`); return Number.isFinite(parsed) && new Date(parsed).toISOString().slice(0, 10) === value; }),
     "population": z.number().int(),
 });
 export type TotalPopulation = z.infer<typeof TotalPopulationSchema>;
diff --git a/base/typescript-zod/test/inputs/json/misc/ac944.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/ac944.json/default/TopLevel.ts
index f170e37..54c2453 100644
--- a/base/typescript-zod/test/inputs/json/misc/ac944.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/ac944.json/default/TopLevel.ts
@@ -3,7 +3,7 @@ import * as z from "zod";
 
 export const TopLevelSchema = z.object({
     "base": z.string(),
-    "date": z.string(),
+    "date": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => { const parsed = Date.parse(`${value}T00:00:00Z`); return Number.isFinite(parsed) && new Date(parsed).toISOString().slice(0, 10) === value; }),
     "rates": z.record(z.string(), z.number()),
 });
 export type TopLevel = z.infer<typeof TopLevelSchema>;
diff --git a/base/typescript-zod/test/inputs/json/misc/b4865.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/b4865.json/default/TopLevel.ts
index 2f68a6c..cdb3cba 100644
--- a/base/typescript-zod/test/inputs/json/misc/b4865.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/b4865.json/default/TopLevel.ts
@@ -37,7 +37,7 @@ export const TopLevelElementSchema = z.object({
     "recclass": z.string(),
     "reclat": z.string().optional(),
     "reclong": z.string().optional(),
-    "year": z.string().pipe(z.coerce.date()).optional(),
+    "year": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success).pipe(z.coerce.date()).optional(),
 });
 export type TopLevelElement = z.infer<typeof TopLevelElementSchema>;
 
diff --git a/base/typescript-zod/test/inputs/json/misc/b6f2c.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/b6f2c.json/default/TopLevel.ts
index 3c5684f..25c8165 100644
--- a/base/typescript-zod/test/inputs/json/misc/b6f2c.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/b6f2c.json/default/TopLevel.ts
@@ -2,7 +2,7 @@ import * as z from "zod";
 
 
 export const TotalPopulationSchema = z.object({
-    "date": z.string(),
+    "date": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => { const parsed = Date.parse(`${value}T00:00:00Z`); return Number.isFinite(parsed) && new Date(parsed).toISOString().slice(0, 10) === value; }),
     "population": z.number().int(),
 });
 export type TotalPopulation = z.infer<typeof TotalPopulationSchema>;
diff --git a/base/typescript-zod/test/inputs/json/misc/bb1ec.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/bb1ec.json/default/TopLevel.ts
index 3c5684f..25c8165 100644
--- a/base/typescript-zod/test/inputs/json/misc/bb1ec.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/bb1ec.json/default/TopLevel.ts
@@ -2,7 +2,7 @@ import * as z from "zod";
 
 
 export const TotalPopulationSchema = z.object({
-    "date": z.string(),
+    "date": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => { const parsed = Date.parse(`${value}T00:00:00Z`); return Number.isFinite(parsed) && new Date(parsed).toISOString().slice(0, 10) === value; }),
     "population": z.number().int(),
 });
 export type TotalPopulation = z.infer<typeof TotalPopulationSchema>;
diff --git a/base/typescript-zod/test/inputs/json/misc/cd463.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/cd463.json/default/TopLevel.ts
index f170e37..54c2453 100644
--- a/base/typescript-zod/test/inputs/json/misc/cd463.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/cd463.json/default/TopLevel.ts
@@ -3,7 +3,7 @@ import * as z from "zod";
 
 export const TopLevelSchema = z.object({
     "base": z.string(),
-    "date": z.string(),
+    "date": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => { const parsed = Date.parse(`${value}T00:00:00Z`); return Number.isFinite(parsed) && new Date(parsed).toISOString().slice(0, 10) === value; }),
     "rates": z.record(z.string(), z.number()),
 });
 export type TopLevel = z.infer<typeof TopLevelSchema>;
diff --git a/base/typescript-zod/test/inputs/json/misc/cf0d8.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/cf0d8.json/default/TopLevel.ts
index ddf9ef4..44e5525 100644
--- a/base/typescript-zod/test/inputs/json/misc/cf0d8.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/cf0d8.json/default/TopLevel.ts
@@ -106,7 +106,7 @@ export type Results = z.infer<typeof ResultsSchema>;
 
 export const QuerySchema = z.object({
     "count": z.number().int(),
-    "created": z.string().pipe(z.coerce.date()),
+    "created": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success).pipe(z.coerce.date()),
     "lang": z.string(),
     "results": ResultsSchema,
 });
diff --git a/base/typescript-zod/test/inputs/json/misc/cfbce.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/cfbce.json/default/TopLevel.ts
index f170e37..54c2453 100644
--- a/base/typescript-zod/test/inputs/json/misc/cfbce.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/cfbce.json/default/TopLevel.ts
@@ -3,7 +3,7 @@ import * as z from "zod";
 
 export const TopLevelSchema = z.object({
     "base": z.string(),
-    "date": z.string(),
+    "date": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => { const parsed = Date.parse(`${value}T00:00:00Z`); return Number.isFinite(parsed) && new Date(parsed).toISOString().slice(0, 10) === value; }),
     "rates": z.record(z.string(), z.number()),
 });
 export type TopLevel = z.infer<typeof TopLevelSchema>;
diff --git a/base/typescript-zod/test/inputs/json/misc/d0908.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/d0908.json/default/TopLevel.ts
index 3c5684f..25c8165 100644
--- a/base/typescript-zod/test/inputs/json/misc/d0908.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/d0908.json/default/TopLevel.ts
@@ -2,7 +2,7 @@ import * as z from "zod";
 
 
 export const TotalPopulationSchema = z.object({
-    "date": z.string(),
+    "date": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => { const parsed = Date.parse(`${value}T00:00:00Z`); return Number.isFinite(parsed) && new Date(parsed).toISOString().slice(0, 10) === value; }),
     "population": z.number().int(),
 });
 export type TotalPopulation = z.infer<typeof TotalPopulationSchema>;
diff --git a/base/typescript-zod/test/inputs/json/misc/d23d5.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/d23d5.json/default/TopLevel.ts
index a17f508..eece100 100644
--- a/base/typescript-zod/test/inputs/json/misc/d23d5.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/d23d5.json/default/TopLevel.ts
@@ -7,10 +7,10 @@ export type Facets = z.infer<typeof FacetsSchema>;
 
 export const ResultSchema = z.object({
     "acronym": z.union([z.null(), z.string()]),
-    "created_at": z.string().pipe(z.coerce.date()),
+    "created_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success).pipe(z.coerce.date()),
     "id": z.string(),
     "name": z.string(),
-    "updated_at": z.string().pipe(z.coerce.date()),
+    "updated_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success).pipe(z.coerce.date()),
     "uri": z.string(),
 });
 export type Result = z.infer<typeof ResultSchema>;
diff --git a/base/typescript-zod/test/inputs/json/misc/dbfb3.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/dbfb3.json/default/TopLevel.ts
index e031325..1071f72 100644
--- a/base/typescript-zod/test/inputs/json/misc/dbfb3.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/dbfb3.json/default/TopLevel.ts
@@ -112,7 +112,7 @@ export type Results = z.infer<typeof ResultsSchema>;
 
 export const QuerySchema = z.object({
     "count": z.number().int(),
-    "created": z.string().pipe(z.coerce.date()),
+    "created": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success).pipe(z.coerce.date()),
     "lang": z.string(),
     "results": ResultsSchema,
 });
diff --git a/base/typescript-zod/test/inputs/json/misc/dc44f.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/dc44f.json/default/TopLevel.ts
index adcb59e..648727c 100644
--- a/base/typescript-zod/test/inputs/json/misc/dc44f.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/dc44f.json/default/TopLevel.ts
@@ -110,7 +110,7 @@ export const LegalityElementSchema = z.object({
 export type LegalityElement = z.infer<typeof LegalityElementSchema>;
 
 export const RulingSchema = z.object({
-    "date": z.string(),
+    "date": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => { const parsed = Date.parse(`${value}T00:00:00Z`); return Number.isFinite(parsed) && new Date(parsed).toISOString().slice(0, 10) === value; }),
     "text": z.string(),
 });
 export type Ruling = z.infer<typeof RulingSchema>;
@@ -156,7 +156,7 @@ export const TopLevelSchema = z.object({
     "mkm_id": z.number().int(),
     "mkm_name": z.string(),
     "name": z.string(),
-    "releaseDate": z.string(),
+    "releaseDate": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => { const parsed = Date.parse(`${value}T00:00:00Z`); return Number.isFinite(parsed) && new Date(parsed).toISOString().slice(0, 10) === value; }),
     "type": z.string(),
 });
 export type TopLevel = z.infer<typeof TopLevelSchema>;
diff --git a/base/typescript-zod/test/inputs/json/misc/dd1ce.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/dd1ce.json/default/TopLevel.ts
index adcb59e..648727c 100644
--- a/base/typescript-zod/test/inputs/json/misc/dd1ce.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/dd1ce.json/default/TopLevel.ts
@@ -110,7 +110,7 @@ export const LegalityElementSchema = z.object({
 export type LegalityElement = z.infer<typeof LegalityElementSchema>;
 
 export const RulingSchema = z.object({
-    "date": z.string(),
+    "date": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => { const parsed = Date.parse(`${value}T00:00:00Z`); return Number.isFinite(parsed) && new Date(parsed).toISOString().slice(0, 10) === value; }),
     "text": z.string(),
 });
 export type Ruling = z.infer<typeof RulingSchema>;
@@ -156,7 +156,7 @@ export const TopLevelSchema = z.object({
     "mkm_id": z.number().int(),
     "mkm_name": z.string(),
     "name": z.string(),
-    "releaseDate": z.string(),
+    "releaseDate": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => { const parsed = Date.parse(`${value}T00:00:00Z`); return Number.isFinite(parsed) && new Date(parsed).toISOString().slice(0, 10) === value; }),
     "type": z.string(),
 });
 export type TopLevel = z.infer<typeof TopLevelSchema>;
diff --git a/base/typescript-zod/test/inputs/json/misc/df957.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/df957.json/default/TopLevel.ts
index ddf9ef4..44e5525 100644
--- a/base/typescript-zod/test/inputs/json/misc/df957.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/df957.json/default/TopLevel.ts
@@ -106,7 +106,7 @@ export type Results = z.infer<typeof ResultsSchema>;
 
 export const QuerySchema = z.object({
     "count": z.number().int(),
-    "created": z.string().pipe(z.coerce.date()),
+    "created": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success).pipe(z.coerce.date()),
     "lang": z.string(),
     "results": ResultsSchema,
 });
diff --git a/base/typescript-zod/test/inputs/json/misc/e2915.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/e2915.json/default/TopLevel.ts
index 6e9d799..c64f3bd 100644
--- a/base/typescript-zod/test/inputs/json/misc/e2915.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/e2915.json/default/TopLevel.ts
@@ -111,7 +111,7 @@ export type Results = z.infer<typeof ResultsSchema>;
 
 export const QuerySchema = z.object({
     "count": z.number().int(),
-    "created": z.string().pipe(z.coerce.date()),
+    "created": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success).pipe(z.coerce.date()),
     "lang": z.string(),
     "results": ResultsSchema,
 });
diff --git a/base/typescript-zod/test/inputs/json/priority/bug2590.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/priority/bug2590.json/default/TopLevel.ts
index ed8299a..3bce539 100644
--- a/base/typescript-zod/test/inputs/json/priority/bug2590.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/priority/bug2590.json/default/TopLevel.ts
@@ -2,8 +2,8 @@ import * as z from "zod";
 
 
 export const InvoiceSchema = z.object({
-    "createdAt": z.union([z.null(), z.string().pipe(z.coerce.date())]),
-    "dueDate": z.union([z.null(), z.string()]),
+    "createdAt": z.union([z.null(), z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success).pipe(z.coerce.date())]),
+    "dueDate": z.union([z.null(), z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => { const parsed = Date.parse(`${value}T00:00:00Z`); return Number.isFinite(parsed) && new Date(parsed).toISOString().slice(0, 10) === value; })]),
     "name": z.string(),
 });
 export type Invoice = z.infer<typeof InvoiceSchema>;
diff --git a/base/typescript-zod/test/inputs/json/priority/bug2663.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/priority/bug2663.json/default/TopLevel.ts
index 68750b0..e59535a 100644
--- a/base/typescript-zod/test/inputs/json/priority/bug2663.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/priority/bug2663.json/default/TopLevel.ts
@@ -2,8 +2,8 @@ import * as z from "zod";
 
 
 export const TopLevelSchema = z.object({
-    "birthday": z.string(),
-    "lastSeen": z.string().pipe(z.coerce.date()),
+    "birthday": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => { const parsed = Date.parse(`${value}T00:00:00Z`); return Number.isFinite(parsed) && new Date(parsed).toISOString().slice(0, 10) === value; }),
+    "lastSeen": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success).pipe(z.coerce.date()),
     "name": z.string(),
 });
 export type TopLevel = z.infer<typeof TopLevelSchema>;
diff --git a/base/typescript-zod/test/inputs/json/priority/keywords.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/priority/keywords.json/default/TopLevel.ts
index a06c975..60e0838 100644
--- a/base/typescript-zod/test/inputs/json/priority/keywords.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/priority/keywords.json/default/TopLevel.ts
@@ -348,7 +348,7 @@ export const DateParseHandlingSchema = z.object({
 export type DateParseHandling = z.infer<typeof DateParseHandlingSchema>;
 
 export const DateTimeSchema = z.object({
-    "DateTime": z.string().pipe(z.coerce.date()),
+    "DateTime": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success).pipe(z.coerce.date()),
 });
 export type DateTime = z.infer<typeof DateTimeSchema>;
 
diff --git a/base/typescript-zod/test/inputs/json/samples/github-events.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/samples/github-events.json/default/TopLevel.ts
index d07ef7c..5183938 100644
--- a/base/typescript-zod/test/inputs/json/samples/github-events.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/samples/github-events.json/default/TopLevel.ts
@@ -56,10 +56,10 @@ export type Label = z.infer<typeof LabelSchema>;
 export const MilestoneSchema = z.object({
     "closed_at": z.null(),
     "closed_issues": z.number().int(),
-    "created_at": z.string().pipe(z.coerce.date()),
+    "created_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success).pipe(z.coerce.date()),
     "creator": UserSchema,
     "description": z.string(),
-    "due_on": z.union([z.null(), z.string().pipe(z.coerce.date())]),
+    "due_on": z.union([z.null(), z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success).pipe(z.coerce.date())]),
     "html_url": z.string(),
     "id": z.number().int(),
     "labels_url": z.string(),
@@ -67,7 +67,7 @@ export const MilestoneSchema = z.object({
     "open_issues": z.number().int(),
     "state": z.string(),
     "title": z.string(),
-    "updated_at": z.string().pipe(z.coerce.date()),
+    "updated_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success).pipe(z.coerce.date()),
     "url": z.string(),
 });
 export type Milestone = z.infer<typeof MilestoneSchema>;
@@ -92,7 +92,7 @@ export const BaseRepoSchema = z.object({
     "compare_url": z.string(),
     "contents_url": z.string(),
     "contributors_url": z.string(),
-    "created_at": z.string().pipe(z.coerce.date()),
+    "created_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success).pipe(z.coerce.date()),
     "default_branch": z.string(),
     "deployments_url": z.string(),
     "description": z.string(),
@@ -133,7 +133,7 @@ export const BaseRepoSchema = z.object({
     "owner": UserSchema,
     "private": z.boolean(),
     "pulls_url": z.string(),
-    "pushed_at": z.string().pipe(z.coerce.date()),
+    "pushed_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success).pipe(z.coerce.date()),
     "releases_url": z.string(),
     "size": z.number().int(),
     "ssh_url": z.string(),
@@ -146,7 +146,7 @@ export const BaseRepoSchema = z.object({
     "tags_url": z.string(),
     "teams_url": z.string(),
     "trees_url": z.string(),
-    "updated_at": z.string().pipe(z.coerce.date()),
+    "updated_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success).pipe(z.coerce.date()),
     "url": z.string(),
     "watchers": z.number().int(),
     "watchers_count": z.number().int(),
@@ -167,11 +167,11 @@ export type TopLevelRepo = z.infer<typeof TopLevelRepoSchema>;
 
 export const CommentSchema = z.object({
     "body": z.string(),
-    "created_at": z.string().pipe(z.coerce.date()),
+    "created_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success).pipe(z.coerce.date()),
     "html_url": z.string(),
     "id": z.number().int(),
     "issue_url": z.string(),
-    "updated_at": z.string().pipe(z.coerce.date()),
+    "updated_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success).pipe(z.coerce.date()),
     "url": z.string(),
     "user": UserSchema,
 });
@@ -190,10 +190,10 @@ export const IssueSchema = z.object({
     "assignee": z.null(),
     "assignees": z.array(z.any()),
     "body": z.string(),
-    "closed_at": z.union([z.null(), z.string().pipe(z.coerce.date())]),
+    "closed_at": z.union([z.null(), z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success).pipe(z.coerce.date())]),
     "comments": z.number().int(),
     "comments_url": z.string(),
-    "created_at": z.string().pipe(z.coerce.date()),
+    "created_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success).pipe(z.coerce.date()),
     "events_url": z.string(),
     "html_url": z.string(),
     "id": z.number().int(),
@@ -206,7 +206,7 @@ export const IssueSchema = z.object({
     "repository_url": z.string(),
     "state": z.string(),
     "title": z.string(),
-    "updated_at": z.string().pipe(z.coerce.date()),
+    "updated_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success).pipe(z.coerce.date()),
     "url": z.string(),
     "user": UserSchema,
 });
@@ -240,12 +240,12 @@ export const PayloadPullRequestSchema = z.object({
     "base": BaseSchema,
     "body": z.string(),
     "changed_files": z.number().int(),
-    "closed_at": z.string().pipe(z.coerce.date()),
+    "closed_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success).pipe(z.coerce.date()),
     "comments": z.number().int(),
     "comments_url": z.string(),
     "commits": z.number().int(),
     "commits_url": z.string(),
-    "created_at": z.string().pipe(z.coerce.date()),
+    "created_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success).pipe(z.coerce.date()),
     "deletions": z.number().int(),
     "diff_url": z.string(),
     "head": BaseSchema,
@@ -259,7 +259,7 @@ export const PayloadPullRequestSchema = z.object({
     "mergeable": z.null(),
     "mergeable_state": z.string(),
     "merged": z.boolean(),
-    "merged_at": z.string().pipe(z.coerce.date()),
+    "merged_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success).pipe(z.coerce.date()),
     "merged_by": UserSchema,
     "milestone": z.null(),
     "number": z.number().int(),
@@ -272,7 +272,7 @@ export const PayloadPullRequestSchema = z.object({
     "state": z.string(),
     "statuses_url": z.string(),
     "title": z.string(),
-    "updated_at": z.string().pipe(z.coerce.date()),
+    "updated_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success).pipe(z.coerce.date()),
     "url": z.string(),
     "user": UserSchema,
 });
@@ -300,7 +300,7 @@ export type Payload = z.infer<typeof PayloadSchema>;
 
 export const TopLevelElementSchema = z.object({
     "actor": ActorSchema,
-    "created_at": z.string().pipe(z.coerce.date()),
+    "created_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success).pipe(z.coerce.date()),
     "id": z.string(),
     "org": ActorSchema.optional(),
     "payload": PayloadSchema,
diff --git a/base/typescript-zod/test/inputs/json/samples/null-safe.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/samples/null-safe.json/default/TopLevel.ts
index 1afce24..9305520 100644
--- a/base/typescript-zod/test/inputs/json/samples/null-safe.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/samples/null-safe.json/default/TopLevel.ts
@@ -10,7 +10,7 @@ export type Address = z.infer<typeof AddressSchema>;
 
 export const ItemSchema = z.object({
     "address": AddressSchema.optional(),
-    "created_at": z.string().pipe(z.coerce.date()).optional(),
+    "created_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success).pipe(z.coerce.date()).optional(),
     "name": z.string(),
     "sex": z.union([z.null(), z.number().int()]),
 });
diff --git a/base/typescript-zod/test/inputs/json/samples/us-senators.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/samples/us-senators.json/default/TopLevel.ts
index d0aa369..b345836 100644
--- a/base/typescript-zod/test/inputs/json/samples/us-senators.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/samples/us-senators.json/default/TopLevel.ts
@@ -96,7 +96,7 @@ export type Extra = z.infer<typeof ExtraSchema>;
 
 export const PersonSchema = z.object({
     "bioguideid": z.string(),
-    "birthday": z.string(),
+    "birthday": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => { const parsed = Date.parse(`${value}T00:00:00Z`); return Number.isFinite(parsed) && new Date(parsed).toISOString().slice(0, 10) === value; }),
     "cspanid": z.number().int(),
     "firstname": z.string(),
     "gender": GenderSchema,
@@ -121,7 +121,7 @@ export const ObjectElementSchema = z.object({
     "current": z.boolean(),
     "description": z.string(),
     "district": z.null(),
-    "enddate": z.string(),
+    "enddate": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => { const parsed = Date.parse(`${value}T00:00:00Z`); return Number.isFinite(parsed) && new Date(parsed).toISOString().slice(0, 10) === value; }),
     "extra": ExtraSchema,
     "leadership_title": z.union([z.null(), z.string()]),
     "party": PartySchema,
@@ -133,7 +133,7 @@ export const ObjectElementSchema = z.object({
     "senator_class_label": SenatorClassLabelSchema,
     "senator_rank": SenatorRankSchema,
     "senator_rank_label": SenatorRankLabelSchema,
-    "startdate": z.string(),
+    "startdate": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => { const parsed = Date.parse(`${value}T00:00:00Z`); return Number.isFinite(parsed) && new Date(parsed).toISOString().slice(0, 10) === value; }),
     "state": z.string(),
     "title": TitleSchema,
     "title_long": RoleTypeLabelSchema,
