diff --git a/base/python/test/inputs/json/misc/0a358.json/default/quicktype.py b/head/python/test/inputs/json/misc/0a358.json/default/quicktype.py
index 641c8a2..8d5e455 100644
--- a/base/python/test/inputs/json/misc/0a358.json/default/quicktype.py
+++ b/head/python/test/inputs/json/misc/0a358.json/default/quicktype.py
@@ -13,7 +13,7 @@ def from_str(x: Any) -> str:
 
 
 def from_datetime(x: Any) -> datetime.datetime:
-    return dateutil.parser.parse(x)
+    return dateutil.parser.isoparse(x)
 
 
 def from_int(x: Any) -> int:
diff --git a/base/python/test/inputs/json/misc/0a91a.json/default/quicktype.py b/head/python/test/inputs/json/misc/0a91a.json/default/quicktype.py
index 24351d6..2414926 100644
--- a/base/python/test/inputs/json/misc/0a91a.json/default/quicktype.py
+++ b/head/python/test/inputs/json/misc/0a91a.json/default/quicktype.py
@@ -44,7 +44,7 @@ def to_class(c: Type[T], x: Any) -> dict:
 
 
 def from_datetime(x: Any) -> datetime.datetime:
-    return dateutil.parser.parse(x)
+    return dateutil.parser.isoparse(x)
 
 
 def from_list(f: Callable[[Any], T], x: Any) -> list[T]:
diff --git a/base/python/test/inputs/json/misc/16bc5.json/default/quicktype.py b/head/python/test/inputs/json/misc/16bc5.json/default/quicktype.py
index 8a37dff..81cd083 100644
--- a/base/python/test/inputs/json/misc/16bc5.json/default/quicktype.py
+++ b/head/python/test/inputs/json/misc/16bc5.json/default/quicktype.py
@@ -36,7 +36,7 @@ def from_int(x: Any) -> int:
 
 
 def from_datetime(x: Any) -> datetime.datetime:
-    return dateutil.parser.parse(x)
+    return dateutil.parser.isoparse(x)
 
 
 @dataclass
diff --git a/base/python/test/inputs/json/misc/262f0.json/default/quicktype.py b/head/python/test/inputs/json/misc/262f0.json/default/quicktype.py
index 670dc71..f79cb3d 100644
--- a/base/python/test/inputs/json/misc/262f0.json/default/quicktype.py
+++ b/head/python/test/inputs/json/misc/262f0.json/default/quicktype.py
@@ -43,7 +43,7 @@ def from_int(x: Any) -> int:
 
 
 def from_datetime(x: Any) -> datetime.datetime:
-    return dateutil.parser.parse(x)
+    return dateutil.parser.isoparse(x)
 
 
 @dataclass
diff --git a/base/python/test/inputs/json/misc/32d5c.json/default/quicktype.py b/head/python/test/inputs/json/misc/32d5c.json/default/quicktype.py
index ca86a95..0c9c76a 100644
--- a/base/python/test/inputs/json/misc/32d5c.json/default/quicktype.py
+++ b/head/python/test/inputs/json/misc/32d5c.json/default/quicktype.py
@@ -23,7 +23,7 @@ def from_str(x: Any) -> str:
 
 
 def from_datetime(x: Any) -> datetime.datetime:
-    return dateutil.parser.parse(x)
+    return dateutil.parser.isoparse(x)
 
 
 def from_none(x: Any) -> Any:
diff --git a/base/python/test/inputs/json/misc/337ed.json/default/quicktype.py b/head/python/test/inputs/json/misc/337ed.json/default/quicktype.py
index 9af0de3..ebd6ca4 100644
--- a/base/python/test/inputs/json/misc/337ed.json/default/quicktype.py
+++ b/head/python/test/inputs/json/misc/337ed.json/default/quicktype.py
@@ -15,7 +15,7 @@ def from_int(x: Any) -> int:
 
 
 def from_datetime(x: Any) -> datetime.datetime:
-    return dateutil.parser.parse(x)
+    return dateutil.parser.isoparse(x)
 
 
 def from_str(x: Any) -> str:
diff --git a/base/python/test/inputs/json/misc/3f1ce.json/default/quicktype.py b/head/python/test/inputs/json/misc/3f1ce.json/default/quicktype.py
index 4b297ab..97ff4b4 100644
--- a/base/python/test/inputs/json/misc/3f1ce.json/default/quicktype.py
+++ b/head/python/test/inputs/json/misc/3f1ce.json/default/quicktype.py
@@ -43,7 +43,7 @@ def from_int(x: Any) -> int:
 
 
 def from_datetime(x: Any) -> datetime.datetime:
-    return dateutil.parser.parse(x)
+    return dateutil.parser.isoparse(x)
 
 
 @dataclass
diff --git a/base/python/test/inputs/json/misc/4c547.json/default/quicktype.py b/head/python/test/inputs/json/misc/4c547.json/default/quicktype.py
index 8a37dff..81cd083 100644
--- a/base/python/test/inputs/json/misc/4c547.json/default/quicktype.py
+++ b/head/python/test/inputs/json/misc/4c547.json/default/quicktype.py
@@ -36,7 +36,7 @@ def from_int(x: Any) -> int:
 
 
 def from_datetime(x: Any) -> datetime.datetime:
-    return dateutil.parser.parse(x)
+    return dateutil.parser.isoparse(x)
 
 
 @dataclass
diff --git a/base/python/test/inputs/json/misc/54d32.json/default/quicktype.py b/head/python/test/inputs/json/misc/54d32.json/default/quicktype.py
index bc02262..6ceef56 100644
--- a/base/python/test/inputs/json/misc/54d32.json/default/quicktype.py
+++ b/head/python/test/inputs/json/misc/54d32.json/default/quicktype.py
@@ -10,7 +10,7 @@ EnumT = TypeVar("EnumT", bound=Enum)
 
 
 def from_datetime(x: Any) -> datetime.datetime:
-    return dateutil.parser.parse(x)
+    return dateutil.parser.isoparse(x)
 
 
 def from_str(x: Any) -> str:
diff --git a/base/python/test/inputs/json/misc/5eae5.json/default/quicktype.py b/head/python/test/inputs/json/misc/5eae5.json/default/quicktype.py
index 8a0b12b..870ad20 100644
--- a/base/python/test/inputs/json/misc/5eae5.json/default/quicktype.py
+++ b/head/python/test/inputs/json/misc/5eae5.json/default/quicktype.py
@@ -8,7 +8,7 @@ T = TypeVar("T")
 
 
 def from_datetime(x: Any) -> datetime.datetime:
-    return dateutil.parser.parse(x)
+    return dateutil.parser.isoparse(x)
 
 
 def from_int(x: Any) -> int:
diff --git a/base/python/test/inputs/json/misc/6dec6.json/default/quicktype.py b/head/python/test/inputs/json/misc/6dec6.json/default/quicktype.py
index ea5ab3c..376cee7 100644
--- a/base/python/test/inputs/json/misc/6dec6.json/default/quicktype.py
+++ b/head/python/test/inputs/json/misc/6dec6.json/default/quicktype.py
@@ -43,7 +43,7 @@ def from_int(x: Any) -> int:
 
 
 def from_datetime(x: Any) -> datetime.datetime:
-    return dateutil.parser.parse(x)
+    return dateutil.parser.isoparse(x)
 
 
 @dataclass
diff --git a/base/python/test/inputs/json/misc/734ad.json/default/quicktype.py b/head/python/test/inputs/json/misc/734ad.json/default/quicktype.py
index 729f05c..8ef5e61 100644
--- a/base/python/test/inputs/json/misc/734ad.json/default/quicktype.py
+++ b/head/python/test/inputs/json/misc/734ad.json/default/quicktype.py
@@ -20,7 +20,7 @@ def from_int(x: Any) -> int:
 
 
 def from_datetime(x: Any) -> datetime.datetime:
-    return dateutil.parser.parse(x)
+    return dateutil.parser.isoparse(x)
 
 
 def from_float(x: Any) -> float:
diff --git a/base/python/test/inputs/json/misc/77392.json/default/quicktype.py b/head/python/test/inputs/json/misc/77392.json/default/quicktype.py
index e360f77..41daa14 100644
--- a/base/python/test/inputs/json/misc/77392.json/default/quicktype.py
+++ b/head/python/test/inputs/json/misc/77392.json/default/quicktype.py
@@ -15,7 +15,7 @@ def from_str(x: Any) -> str:
 
 
 def from_datetime(x: Any) -> datetime.datetime:
-    return dateutil.parser.parse(x)
+    return dateutil.parser.isoparse(x)
 
 
 def from_none(x: Any) -> Any:
diff --git a/base/python/test/inputs/json/misc/7f568.json/default/quicktype.py b/head/python/test/inputs/json/misc/7f568.json/default/quicktype.py
index 31b9ce4..f58d1f4 100644
--- a/base/python/test/inputs/json/misc/7f568.json/default/quicktype.py
+++ b/head/python/test/inputs/json/misc/7f568.json/default/quicktype.py
@@ -39,7 +39,7 @@ def to_enum(c: Type[EnumT], x: Any) -> EnumT:
 
 
 def from_datetime(x: Any) -> datetime.datetime:
-    return dateutil.parser.parse(x)
+    return dateutil.parser.isoparse(x)
 
 
 def from_dict(f: Callable[[Any], T], x: Any) -> dict[str, T]:
diff --git a/base/python/test/inputs/json/misc/80aff.json/default/quicktype.py b/head/python/test/inputs/json/misc/80aff.json/default/quicktype.py
index 2d8124c..3f0d1d9 100644
--- a/base/python/test/inputs/json/misc/80aff.json/default/quicktype.py
+++ b/head/python/test/inputs/json/misc/80aff.json/default/quicktype.py
@@ -8,7 +8,7 @@ T = TypeVar("T")
 
 
 def from_datetime(x: Any) -> datetime.datetime:
-    return dateutil.parser.parse(x)
+    return dateutil.parser.isoparse(x)
 
 
 def from_int(x: Any) -> int:
diff --git a/base/python/test/inputs/json/misc/88130.json/default/quicktype.py b/head/python/test/inputs/json/misc/88130.json/default/quicktype.py
index 8a37dff..81cd083 100644
--- a/base/python/test/inputs/json/misc/88130.json/default/quicktype.py
+++ b/head/python/test/inputs/json/misc/88130.json/default/quicktype.py
@@ -36,7 +36,7 @@ def from_int(x: Any) -> int:
 
 
 def from_datetime(x: Any) -> datetime.datetime:
-    return dateutil.parser.parse(x)
+    return dateutil.parser.isoparse(x)
 
 
 @dataclass
diff --git a/base/python/test/inputs/json/misc/9929c.json/default/quicktype.py b/head/python/test/inputs/json/misc/9929c.json/default/quicktype.py
index 8a37dff..81cd083 100644
--- a/base/python/test/inputs/json/misc/9929c.json/default/quicktype.py
+++ b/head/python/test/inputs/json/misc/9929c.json/default/quicktype.py
@@ -36,7 +36,7 @@ def from_int(x: Any) -> int:
 
 
 def from_datetime(x: Any) -> datetime.datetime:
-    return dateutil.parser.parse(x)
+    return dateutil.parser.isoparse(x)
 
 
 @dataclass
diff --git a/base/python/test/inputs/json/misc/9ac3b.json/default/quicktype.py b/head/python/test/inputs/json/misc/9ac3b.json/default/quicktype.py
index 70825e8..668c220 100644
--- a/base/python/test/inputs/json/misc/9ac3b.json/default/quicktype.py
+++ b/head/python/test/inputs/json/misc/9ac3b.json/default/quicktype.py
@@ -10,7 +10,7 @@ EnumT = TypeVar("EnumT", bound=Enum)
 
 
 def from_datetime(x: Any) -> datetime.datetime:
-    return dateutil.parser.parse(x)
+    return dateutil.parser.isoparse(x)
 
 
 def from_str(x: Any) -> str:
diff --git a/base/python/test/inputs/json/misc/a0496.json/default/quicktype.py b/head/python/test/inputs/json/misc/a0496.json/default/quicktype.py
index 9646b63..3eb3fdc 100644
--- a/base/python/test/inputs/json/misc/a0496.json/default/quicktype.py
+++ b/head/python/test/inputs/json/misc/a0496.json/default/quicktype.py
@@ -53,7 +53,7 @@ def from_bool(x: Any) -> bool:
 
 
 def from_datetime(x: Any) -> datetime.datetime:
-    return dateutil.parser.parse(x)
+    return dateutil.parser.isoparse(x)
 
 
 def to_float(x: Any) -> float:
diff --git a/base/python/test/inputs/json/misc/a1eca.json/default/quicktype.py b/head/python/test/inputs/json/misc/a1eca.json/default/quicktype.py
index 8a37dff..81cd083 100644
--- a/base/python/test/inputs/json/misc/a1eca.json/default/quicktype.py
+++ b/head/python/test/inputs/json/misc/a1eca.json/default/quicktype.py
@@ -36,7 +36,7 @@ def from_int(x: Any) -> int:
 
 
 def from_datetime(x: Any) -> datetime.datetime:
-    return dateutil.parser.parse(x)
+    return dateutil.parser.isoparse(x)
 
 
 @dataclass
diff --git a/base/python/test/inputs/json/misc/b4865.json/default/quicktype.py b/head/python/test/inputs/json/misc/b4865.json/default/quicktype.py
index 91e4861..c3cf5df 100644
--- a/base/python/test/inputs/json/misc/b4865.json/default/quicktype.py
+++ b/head/python/test/inputs/json/misc/b4865.json/default/quicktype.py
@@ -49,7 +49,7 @@ def from_union(fs, x):
 
 
 def from_datetime(x: Any) -> datetime.datetime:
-    return dateutil.parser.parse(x)
+    return dateutil.parser.isoparse(x)
 
 
 def is_type(t: Type[T], x: Any) -> T:
diff --git a/base/python/test/inputs/json/misc/cf0d8.json/default/quicktype.py b/head/python/test/inputs/json/misc/cf0d8.json/default/quicktype.py
index 8a37dff..81cd083 100644
--- a/base/python/test/inputs/json/misc/cf0d8.json/default/quicktype.py
+++ b/head/python/test/inputs/json/misc/cf0d8.json/default/quicktype.py
@@ -36,7 +36,7 @@ def from_int(x: Any) -> int:
 
 
 def from_datetime(x: Any) -> datetime.datetime:
-    return dateutil.parser.parse(x)
+    return dateutil.parser.isoparse(x)
 
 
 @dataclass
diff --git a/base/python/test/inputs/json/misc/d23d5.json/default/quicktype.py b/head/python/test/inputs/json/misc/d23d5.json/default/quicktype.py
index ff759bb..a427894 100644
--- a/base/python/test/inputs/json/misc/d23d5.json/default/quicktype.py
+++ b/head/python/test/inputs/json/misc/d23d5.json/default/quicktype.py
@@ -8,7 +8,7 @@ T = TypeVar("T")
 
 
 def from_datetime(x: Any) -> datetime.datetime:
-    return dateutil.parser.parse(x)
+    return dateutil.parser.isoparse(x)
 
 
 def from_str(x: Any) -> str:
diff --git a/base/python/test/inputs/json/misc/dbfb3.json/default/quicktype.py b/head/python/test/inputs/json/misc/dbfb3.json/default/quicktype.py
index 4da4d7a..fad4d40 100644
--- a/base/python/test/inputs/json/misc/dbfb3.json/default/quicktype.py
+++ b/head/python/test/inputs/json/misc/dbfb3.json/default/quicktype.py
@@ -43,7 +43,7 @@ def from_int(x: Any) -> int:
 
 
 def from_datetime(x: Any) -> datetime.datetime:
-    return dateutil.parser.parse(x)
+    return dateutil.parser.isoparse(x)
 
 
 @dataclass
diff --git a/base/python/test/inputs/json/misc/df957.json/default/quicktype.py b/head/python/test/inputs/json/misc/df957.json/default/quicktype.py
index 8a37dff..81cd083 100644
--- a/base/python/test/inputs/json/misc/df957.json/default/quicktype.py
+++ b/head/python/test/inputs/json/misc/df957.json/default/quicktype.py
@@ -36,7 +36,7 @@ def from_int(x: Any) -> int:
 
 
 def from_datetime(x: Any) -> datetime.datetime:
-    return dateutil.parser.parse(x)
+    return dateutil.parser.isoparse(x)
 
 
 @dataclass
diff --git a/base/python/test/inputs/json/misc/e2915.json/default/quicktype.py b/head/python/test/inputs/json/misc/e2915.json/default/quicktype.py
index 7752d4c..9fe0985 100644
--- a/base/python/test/inputs/json/misc/e2915.json/default/quicktype.py
+++ b/head/python/test/inputs/json/misc/e2915.json/default/quicktype.py
@@ -43,7 +43,7 @@ def from_int(x: Any) -> int:
 
 
 def from_datetime(x: Any) -> datetime.datetime:
-    return dateutil.parser.parse(x)
+    return dateutil.parser.isoparse(x)
 
 
 @dataclass
diff --git a/base/python/test/inputs/json/priority/bug2590.json/default/quicktype.py b/head/python/test/inputs/json/priority/bug2590.json/default/quicktype.py
index 8b179c4..1b6e1dd 100644
--- a/base/python/test/inputs/json/priority/bug2590.json/default/quicktype.py
+++ b/head/python/test/inputs/json/priority/bug2590.json/default/quicktype.py
@@ -14,7 +14,7 @@ def from_str(x: Any) -> str:
 
 
 def from_datetime(x: Any) -> datetime.datetime:
-    return dateutil.parser.parse(x)
+    return dateutil.parser.isoparse(x)
 
 
 def from_none(x: Any) -> Any:
diff --git a/base/python/test/inputs/json/priority/bug2663.json/default/quicktype.py b/head/python/test/inputs/json/priority/bug2663.json/default/quicktype.py
index 608dc5f..f6ee8ac 100644
--- a/base/python/test/inputs/json/priority/bug2663.json/default/quicktype.py
+++ b/head/python/test/inputs/json/priority/bug2663.json/default/quicktype.py
@@ -14,7 +14,7 @@ def from_date(x: Any) -> datetime.date:
 
 
 def from_datetime(x: Any) -> datetime.datetime:
-    return dateutil.parser.parse(x)
+    return dateutil.parser.isoparse(x)
 
 
 def from_str(x: Any) -> str:
diff --git a/base/python/test/inputs/json/priority/keywords.json/default/quicktype.py b/head/python/test/inputs/json/priority/keywords.json/default/quicktype.py
index 16b6387..93b085d 100644
--- a/base/python/test/inputs/json/priority/keywords.json/default/quicktype.py
+++ b/head/python/test/inputs/json/priority/keywords.json/default/quicktype.py
@@ -21,7 +21,7 @@ def to_class(c: Type[T], x: Any) -> dict:
 
 
 def from_datetime(x: Any) -> datetime.datetime:
-    return dateutil.parser.parse(x)
+    return dateutil.parser.isoparse(x)
 
 
 def from_list(f: Callable[[Any], T], x: Any) -> list[T]:
diff --git a/base/python/test/inputs/json/samples/github-events.json/default/quicktype.py b/head/python/test/inputs/json/samples/github-events.json/default/quicktype.py
index 46828c4..a1c8751 100644
--- a/base/python/test/inputs/json/samples/github-events.json/default/quicktype.py
+++ b/head/python/test/inputs/json/samples/github-events.json/default/quicktype.py
@@ -44,7 +44,7 @@ def to_enum(c: Type[EnumT], x: Any) -> EnumT:
 
 
 def from_datetime(x: Any) -> datetime.datetime:
-    return dateutil.parser.parse(x)
+    return dateutil.parser.isoparse(x)
 
 
 def to_class(c: Type[T], x: Any) -> dict:
diff --git a/base/python/test/inputs/json/samples/null-safe.json/default/quicktype.py b/head/python/test/inputs/json/samples/null-safe.json/default/quicktype.py
index 2d55a73..1fabfb6 100644
--- a/base/python/test/inputs/json/samples/null-safe.json/default/quicktype.py
+++ b/head/python/test/inputs/json/samples/null-safe.json/default/quicktype.py
@@ -27,7 +27,7 @@ def from_union(fs, x):
 
 
 def from_datetime(x: Any) -> datetime.datetime:
-    return dateutil.parser.parse(x)
+    return dateutil.parser.isoparse(x)
 
 
 def from_int(x: Any) -> int:
diff --git a/base/schema-python/test/inputs/schema/date-time-or-string.schema/default/quicktype.py b/head/schema-python/test/inputs/schema/date-time-or-string.schema/default/quicktype.py
index ff33799..5fae995 100644
--- a/base/schema-python/test/inputs/schema/date-time-or-string.schema/default/quicktype.py
+++ b/head/schema-python/test/inputs/schema/date-time-or-string.schema/default/quicktype.py
@@ -10,7 +10,7 @@ EnumT = TypeVar("EnumT", bound=Enum)
 
 
 def from_datetime(x: Any) -> datetime.datetime:
-    return dateutil.parser.parse(x)
+    return dateutil.parser.isoparse(x)
 
 
 def from_union(fs, x):
diff --git a/base/schema-python/test/inputs/schema/date-time.schema/default/quicktype.py b/head/schema-python/test/inputs/schema/date-time.schema/default/quicktype.py
index 2be9df0..539178e 100644
--- a/base/schema-python/test/inputs/schema/date-time.schema/default/quicktype.py
+++ b/head/schema-python/test/inputs/schema/date-time.schema/default/quicktype.py
@@ -21,7 +21,7 @@ def from_int(x: Any) -> int:
 
 
 def from_datetime(x: Any) -> datetime.datetime:
-    return dateutil.parser.parse(x)
+    return dateutil.parser.isoparse(x)
 
 
 def from_union(fs, x):
@@ -39,7 +39,7 @@ def from_date(x: Any) -> datetime.date:
 
 
 def from_time(x: Any) -> datetime.time:
-    assert isinstance(x, str) and re.match(r"^\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})?$", x)
+    assert isinstance(x, str) and re.match(r"^\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:[Zz]|[+-]\d{2}:\d{2})?$", x)
     return dateutil.parser.parse(x).timetz()
 
 
diff --git a/base/schema-python/test/inputs/schema/optional-date-time.schema/default/quicktype.py b/head/schema-python/test/inputs/schema/optional-date-time.schema/default/quicktype.py
index 6679c21..df341f5 100644
--- a/base/schema-python/test/inputs/schema/optional-date-time.schema/default/quicktype.py
+++ b/head/schema-python/test/inputs/schema/optional-date-time.schema/default/quicktype.py
@@ -14,11 +14,11 @@ def from_date(x: Any) -> datetime.date:
 
 
 def from_datetime(x: Any) -> datetime.datetime:
-    return dateutil.parser.parse(x)
+    return dateutil.parser.isoparse(x)
 
 
 def from_time(x: Any) -> datetime.time:
-    assert isinstance(x, str) and re.match(r"^\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})?$", x)
+    assert isinstance(x, str) and re.match(r"^\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:[Zz]|[+-]\d{2}:\d{2})?$", x)
     return dateutil.parser.parse(x).timetz()
 
 
diff --git a/base/schema-typescript-effect-schema/test/inputs/schema/date-time-or-string.schema/default/TopLevel.ts b/head/schema-typescript-effect-schema/test/inputs/schema/date-time-or-string.schema/default/TopLevel.ts
index 8ae6d88..43a65fc 100644
--- a/base/schema-typescript-effect-schema/test/inputs/schema/date-time-or-string.schema/default/TopLevel.ts
+++ b/head/schema-typescript-effect-schema/test/inputs/schema/date-time-or-string.schema/default/TopLevel.ts
@@ -7,6 +7,6 @@ export const BarEnum = S.Literal(
 export type BarEnum = S.Schema.Type<typeof BarEnum>;
 
 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
-    "bar": S.Union(S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), BarEnum),
+    "bar": S.Union(S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))), BarEnum),
     "foo": S.String,
 }) {}
diff --git a/base/schema-typescript-effect-schema/test/inputs/schema/date-time.schema/default/TopLevel.ts b/head/schema-typescript-effect-schema/test/inputs/schema/date-time.schema/default/TopLevel.ts
index b3c44c4..d0545e1 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
@@ -17,12 +17,12 @@ export class LocalDate extends S.Class<LocalDate>("LocalDate")(S.Struct({}).pipe
 ) {}
 
 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})$/)),
+    "complex-union-array": S.Array(S.Union(S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))), ComplexUnionArrayEnum, S.Int)),
+    "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
+    "date-time": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "local-date-class": S.optional(LocalDate),
     "offset-date-time-class": S.optional(OffsetDateTime),
     "offset-time-class": S.optional(OffsetTime),
-    "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})$/)))),
+    "time": S.String.pipe(S.pattern(/^(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i)),
+    "union-array": S.Array(S.Union(S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)), S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))), S.String.pipe(S.pattern(/^(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i)))),
 }) {}
diff --git a/base/schema-typescript-effect-schema/test/inputs/schema/optional-date-time.schema/default/TopLevel.ts b/head/schema-typescript-effect-schema/test/inputs/schema/optional-date-time.schema/default/TopLevel.ts
index fa0c9a1..2952190 100644
--- a/base/schema-typescript-effect-schema/test/inputs/schema/optional-date-time.schema/default/TopLevel.ts
+++ b/head/schema-typescript-effect-schema/test/inputs/schema/optional-date-time.schema/default/TopLevel.ts
@@ -2,10 +2,10 @@ import * as S from "effect/Schema";
 
 
 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
-    "optional-date": S.optional(S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/))),
-    "optional-date-time": S.optional(S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/))),
-    "optional-time": S.optional(S.String.pipe(S.pattern(/^\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/))),
-    "required-date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
-    "required-date-time": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
-    "required-time": S.String.pipe(S.pattern(/^\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "optional-date": S.optional(S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value))),
+    "optional-date-time": S.optional(S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)))),
+    "optional-time": S.optional(S.String.pipe(S.pattern(/^(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i))),
+    "required-date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
+    "required-date-time": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
+    "required-time": S.String.pipe(S.pattern(/^(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i)),
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/016af.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/016af.json/default/TopLevel.ts
index 05ec271..9c87c4b 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/016af.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/016af.json/default/TopLevel.ts
@@ -2,7 +2,7 @@ import * as S from "effect/Schema";
 
 
 export class TotalPopulation extends S.Class<TotalPopulation>("TotalPopulation")({
-    "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "population": S.Int,
 }) {}
 
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/033b1.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/033b1.json/default/TopLevel.ts
index f216282..1e8fac1 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/033b1.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/033b1.json/default/TopLevel.ts
@@ -3,6 +3,6 @@ import * as S from "effect/Schema";
 
 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "base": S.String,
-    "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "rates": S.Record({ key: S.String, value: S.Number}),
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/0a358.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/0a358.json/default/TopLevel.ts
index 361f788..51eb5e0 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/0a358.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/0a358.json/default/TopLevel.ts
@@ -3,10 +3,10 @@ import * as S from "effect/Schema";
 
 export class Result extends S.Class<Result>("Result")({
     "code": S.String,
-    "created_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "created_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "id": S.Int,
     "name": S.String,
-    "updated_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "updated_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "uri": S.String,
 }) {}
 
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/0a91a.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/0a91a.json/default/TopLevel.ts
index 25aee95..fce9f67 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/0a91a.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/0a91a.json/default/TopLevel.ts
@@ -63,7 +63,7 @@ export class BaseRepo extends S.Class<BaseRepo>("BaseRepo")({
     "compare_url": S.String,
     "contents_url": S.String,
     "contributors_url": S.String,
-    "created_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "created_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "default_branch": S.String,
     "deployments_url": S.String,
     "description": S.Null,
@@ -104,7 +104,7 @@ export class BaseRepo extends S.Class<BaseRepo>("BaseRepo")({
     "owner": MergedBy,
     "private": S.Boolean,
     "pulls_url": S.String,
-    "pushed_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "pushed_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "releases_url": S.String,
     "size": S.Int,
     "ssh_url": S.String,
@@ -117,7 +117,7 @@ export class BaseRepo extends S.Class<BaseRepo>("BaseRepo")({
     "tags_url": S.String,
     "teams_url": S.String,
     "trees_url": S.String,
-    "updated_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "updated_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "url": S.String,
     "watchers": S.Int,
     "watchers_count": S.Int,
@@ -138,12 +138,12 @@ export class PullRequest extends S.Class<PullRequest>("PullRequest")({
     "base": Base,
     "body": S.String,
     "changed_files": S.Int,
-    "closed_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "closed_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "comments": S.Int,
     "comments_url": S.String,
     "commits": S.Int,
     "commits_url": S.String,
-    "created_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "created_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "deletions": S.Int,
     "diff_url": S.String,
     "head": Base,
@@ -157,7 +157,7 @@ export class PullRequest extends S.Class<PullRequest>("PullRequest")({
     "mergeable": S.Null,
     "mergeable_state": S.String,
     "merged": S.Boolean,
-    "merged_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "merged_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "merged_by": MergedBy,
     "milestone": S.Null,
     "number": S.Int,
@@ -170,7 +170,7 @@ export class PullRequest extends S.Class<PullRequest>("PullRequest")({
     "state": S.String,
     "statuses_url": S.String,
     "title": S.String,
-    "updated_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "updated_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "url": S.String,
     "user": MergedBy,
 }) {}
@@ -216,7 +216,7 @@ export class Actor extends S.Class<Actor>("Actor")({
 
 export class TopLevelElement extends S.Class<TopLevelElement>("TopLevelElement")({
     "actor": Actor,
-    "created_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "created_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "id": S.String,
     "org": S.optional(Actor),
     "payload": Payload,
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/0e0c2.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/0e0c2.json/default/TopLevel.ts
index 06c39dd..72c254e 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/0e0c2.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/0e0c2.json/default/TopLevel.ts
@@ -74,7 +74,7 @@ export class Result extends S.Class<Result>("Result")({
     "id": S.Int,
     "images": S.Array(Image),
     "language": ResultLanguage,
-    "release_date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "release_date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "stars": S.Int,
     "tags": S.NullOr(S.Array(S.Any)),
     "title": S.String,
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/167d6.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/167d6.json/default/TopLevel.ts
index f216282..1e8fac1 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/167d6.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/167d6.json/default/TopLevel.ts
@@ -3,6 +3,6 @@ import * as S from "effect/Schema";
 
 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "base": S.String,
-    "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "rates": S.Record({ key: S.String, value: S.Number}),
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/16bc5.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/16bc5.json/default/TopLevel.ts
index fd81247..b939e72 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/16bc5.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/16bc5.json/default/TopLevel.ts
@@ -94,7 +94,7 @@ export class Results extends S.Class<Results>("Results")({
 
 export class Query extends S.Class<Query>("Query")({
     "count": S.Int,
-    "created": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "created": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "lang": S.String,
     "results": Results,
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/1b28c.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/1b28c.json/default/TopLevel.ts
index 05ec271..9c87c4b 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/1b28c.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/1b28c.json/default/TopLevel.ts
@@ -2,7 +2,7 @@ import * as S from "effect/Schema";
 
 
 export class TotalPopulation extends S.Class<TotalPopulation>("TotalPopulation")({
-    "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "population": S.Int,
 }) {}
 
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/1b409.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/1b409.json/default/TopLevel.ts
index 0f86d0c..fb19eb0 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/1b409.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/1b409.json/default/TopLevel.ts
@@ -54,7 +54,7 @@ export type Title = S.Schema.Type<typeof Title>;
 
 export class Person extends S.Class<Person>("Person")({
     "bioguideid": S.String,
-    "birthday": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "birthday": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "cspanid": S.Int,
     "firstname": S.String,
     "gender": Gender,
@@ -87,7 +87,7 @@ export class ObjectElement extends S.Class<ObjectElement>("ObjectElement")({
     "current": S.Boolean,
     "description": S.String,
     "district": S.Int,
-    "enddate": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "enddate": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "extra": Extra,
     "id": S.Int,
     "leadership_title": S.NullOr(S.String),
@@ -98,7 +98,7 @@ export class ObjectElement extends S.Class<ObjectElement>("ObjectElement")({
     "role_type_label": RoleTypeLabel,
     "senator_class": S.Null,
     "senator_rank": S.Null,
-    "startdate": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "startdate": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "state": S.String,
     "title": Title,
     "title_long": RoleTypeLabel,
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/262f0.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/262f0.json/default/TopLevel.ts
index 4527c40..840c31a 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/262f0.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/262f0.json/default/TopLevel.ts
@@ -101,7 +101,7 @@ export class Results extends S.Class<Results>("Results")({
 
 export class Query extends S.Class<Query>("Query")({
     "count": S.Int,
-    "created": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "created": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "lang": S.String,
     "results": Results,
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/2d4e2.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/2d4e2.json/default/TopLevel.ts
index adcadc0..2a30ac5 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/2d4e2.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/2d4e2.json/default/TopLevel.ts
@@ -80,7 +80,7 @@ export type Title = S.Schema.Type<typeof Title>;
 
 export class Person extends S.Class<Person>("Person")({
     "bioguideid": S.String,
-    "birthday": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "birthday": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "cspanid": S.Int,
     "firstname": S.String,
     "gender": Gender,
@@ -113,7 +113,7 @@ export class ObjectElement extends S.Class<ObjectElement>("ObjectElement")({
     "current": S.Boolean,
     "description": S.String,
     "district": S.Null,
-    "enddate": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "enddate": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "extra": Extra,
     "id": S.Int,
     "leadership_title": S.NullOr(S.String),
@@ -126,7 +126,7 @@ export class ObjectElement extends S.Class<ObjectElement>("ObjectElement")({
     "senator_class_label": SenatorClassLabel,
     "senator_rank": SenatorRank,
     "senator_rank_label": SenatorRankLabel,
-    "startdate": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "startdate": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "state": S.String,
     "title": Title,
     "title_long": RoleTypeLabel,
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/31189.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/31189.json/default/TopLevel.ts
index 3a8eef8..8a5e879 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/31189.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/31189.json/default/TopLevel.ts
@@ -16,7 +16,7 @@ export class Rates extends S.Class<Rates>("Rates")({
 }) {}
 
 export class Period extends S.Class<Period>("Period")({
-    "effective_from": S.Union(S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)), EffectiveFromEnum),
+    "effective_from": S.Union(S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)), EffectiveFromEnum),
     "rates": Rates,
 }) {}
 
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/32d5c.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/32d5c.json/default/TopLevel.ts
index a215029..e029762 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/32d5c.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/32d5c.json/default/TopLevel.ts
@@ -2,7 +2,7 @@ import * as S from "effect/Schema";
 
 
 export class TopLevelElement extends S.Class<TopLevelElement>("TopLevelElement")({
-    "BirthDate": S.NullOr(S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/))),
+    "BirthDate": S.NullOr(S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)))),
     "BirthDateIsProtected": S.Boolean,
     "GenderTypeID": S.Int,
     "Notes": S.String,
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/337ed.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/337ed.json/default/TopLevel.ts
index defcf1d..fec8eb8 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/337ed.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/337ed.json/default/TopLevel.ts
@@ -24,12 +24,12 @@ export type ResultType = S.Schema.Type<typeof ResultType>;
 
 export class CustomIncome extends S.Class<CustomIncome>("CustomIncome")({
     "amount": S.Int,
-    "created_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "created_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "id": S.String,
     "name": S.String,
     "status": Status,
     "type": CustomIncomeType,
-    "updated_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "updated_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "uri": S.String,
 }) {}
 
@@ -37,11 +37,11 @@ export class Result extends S.Class<Result>("Result")({
     "cost_absolute": S.NullOr(S.Int),
     "cost_max": S.NullOr(S.Int),
     "cost_min": S.NullOr(S.Int),
-    "created_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "created_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "customIncomes": S.Array(CustomIncome),
     "direct_rep_costs_max": S.Null,
     "direct_rep_costs_min": S.Null,
-    "end_date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "end_date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "eur_sources_grants": S.Int,
     "eur_sources_grants_src": S.NullOr(S.String),
     "eur_sources_procurement": S.Int,
@@ -57,14 +57,14 @@ export class Result extends S.Class<Result>("Result")({
     "public_financing_national": S.NullOr(S.Int),
     "public_financing_total": S.NullOr(S.Int),
     "representative": S.String,
-    "start_date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "start_date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "status": Status,
     "total_budget": S.NullOr(S.Int),
     "turnover_absolute": S.NullOr(S.Int),
     "turnover_max": S.NullOr(S.Int),
     "turnover_min": S.NullOr(S.Int),
     "type": ResultType,
-    "updated_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "updated_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "uri": S.String,
 }) {}
 
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/33d2e.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/33d2e.json/default/TopLevel.ts
index b2e54fe..fc8182d 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/33d2e.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/33d2e.json/default/TopLevel.ts
@@ -43,11 +43,11 @@ export class Prize extends S.Class<Prize>("Prize")({
 }) {}
 
 export class Laureate extends S.Class<Laureate>("Laureate")({
-    "born": S.Union(S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)), BornEnum),
+    "born": S.Union(S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)), BornEnum),
     "bornCity": S.optional(S.String),
     "bornCountry": S.optional(S.String),
     "bornCountryCode": S.optional(S.String),
-    "died": S.Union(S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)), BornEnum),
+    "died": S.Union(S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)), BornEnum),
     "diedCity": S.optional(S.String),
     "diedCountry": S.optional(S.String),
     "diedCountryCode": S.optional(S.String),
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/3659d.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/3659d.json/default/TopLevel.ts
index 05ec271..9c87c4b 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/3659d.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/3659d.json/default/TopLevel.ts
@@ -2,7 +2,7 @@ import * as S from "effect/Schema";
 
 
 export class TotalPopulation extends S.Class<TotalPopulation>("TotalPopulation")({
-    "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "population": S.Int,
 }) {}
 
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/3f1ce.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/3f1ce.json/default/TopLevel.ts
index c62ac32..27cc22a 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/3f1ce.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/3f1ce.json/default/TopLevel.ts
@@ -99,7 +99,7 @@ export class Results extends S.Class<Results>("Results")({
 
 export class Query extends S.Class<Query>("Query")({
     "count": S.Int,
-    "created": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "created": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "lang": S.String,
     "results": Results,
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/43eaf.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/43eaf.json/default/TopLevel.ts
index f216282..1e8fac1 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/43eaf.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/43eaf.json/default/TopLevel.ts
@@ -3,6 +3,6 @@ import * as S from "effect/Schema";
 
 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "base": S.String,
-    "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "rates": S.Record({ key: S.String, value: S.Number}),
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/4961a.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/4961a.json/default/TopLevel.ts
index 05ec271..9c87c4b 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/4961a.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/4961a.json/default/TopLevel.ts
@@ -2,7 +2,7 @@ import * as S from "effect/Schema";
 
 
 export class TotalPopulation extends S.Class<TotalPopulation>("TotalPopulation")({
-    "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "population": S.Int,
 }) {}
 
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/4a0d7.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/4a0d7.json/default/TopLevel.ts
index 05ec271..9c87c4b 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/4a0d7.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/4a0d7.json/default/TopLevel.ts
@@ -2,7 +2,7 @@ import * as S from "effect/Schema";
 
 
 export class TotalPopulation extends S.Class<TotalPopulation>("TotalPopulation")({
-    "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "population": S.Int,
 }) {}
 
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/4c547.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/4c547.json/default/TopLevel.ts
index fd81247..b939e72 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/4c547.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/4c547.json/default/TopLevel.ts
@@ -94,7 +94,7 @@ export class Results extends S.Class<Results>("Results")({
 
 export class Query extends S.Class<Query>("Query")({
     "count": S.Int,
-    "created": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "created": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "lang": S.String,
     "results": Results,
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/4e336.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/4e336.json/default/TopLevel.ts
index 05ec271..9c87c4b 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/4e336.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/4e336.json/default/TopLevel.ts
@@ -2,7 +2,7 @@ import * as S from "effect/Schema";
 
 
 export class TotalPopulation extends S.Class<TotalPopulation>("TotalPopulation")({
-    "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "population": S.Int,
 }) {}
 
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/54d32.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/54d32.json/default/TopLevel.ts
index 92caac8..79f9b97 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/54d32.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/54d32.json/default/TopLevel.ts
@@ -8,12 +8,12 @@ export const Status = S.Literal(
 export type Status = S.Schema.Type<typeof Status>;
 
 export class Result extends S.Class<Result>("Result")({
-    "created_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "created_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "id": S.String,
     "person_id": S.String,
     "representative_id": S.String,
     "status": Status,
-    "updated_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "updated_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
 }) {}
 
 export class Facets extends S.Class<Facets>("Facets")(S.Struct({}).pipe(S.filter(value => typeof value === "object" && value !== null && !Array.isArray(value)))
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/5eae5.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/5eae5.json/default/TopLevel.ts
index 91b64bf..5ad7a81 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/5eae5.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/5eae5.json/default/TopLevel.ts
@@ -2,7 +2,7 @@ import * as S from "effect/Schema";
 
 
 export class TopLevelElement extends S.Class<TopLevelElement>("TopLevelElement")({
-    "Date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "Date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "ID": S.Int,
     "Sponsor": S.String,
     "Title": S.String,
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/5f3a1.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/5f3a1.json/default/TopLevel.ts
index f216282..1e8fac1 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/5f3a1.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/5f3a1.json/default/TopLevel.ts
@@ -3,6 +3,6 @@ import * as S from "effect/Schema";
 
 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "base": S.String,
-    "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "rates": S.Record({ key: S.String, value: S.Number}),
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/6260a.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/6260a.json/default/TopLevel.ts
index f216282..1e8fac1 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/6260a.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/6260a.json/default/TopLevel.ts
@@ -3,6 +3,6 @@ import * as S from "effect/Schema";
 
 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "base": S.String,
-    "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "rates": S.Record({ key: S.String, value: S.Number}),
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/65dec.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/65dec.json/default/TopLevel.ts
index 772d822..5c10735 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/65dec.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/65dec.json/default/TopLevel.ts
@@ -55,7 +55,7 @@ export const Type = S.Literal(
 export type Type = S.Schema.Type<typeof Type>;
 
 export class Ruling extends S.Class<Ruling>("Ruling")({
-    "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "text": S.String,
 }) {}
 
@@ -105,6 +105,6 @@ export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "mkm_id": S.Int,
     "mkm_name": S.String,
     "name": S.String,
-    "releaseDate": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "releaseDate": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "type": S.String,
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/6dec6.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/6dec6.json/default/TopLevel.ts
index 03e6de3..a6d5846 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/6dec6.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/6dec6.json/default/TopLevel.ts
@@ -101,7 +101,7 @@ export class Results extends S.Class<Results>("Results")({
 
 export class Query extends S.Class<Query>("Query")({
     "count": S.Int,
-    "created": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "created": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "lang": S.String,
     "results": Results,
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/70c77.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/70c77.json/default/TopLevel.ts
index f216282..1e8fac1 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/70c77.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/70c77.json/default/TopLevel.ts
@@ -3,6 +3,6 @@ import * as S from "effect/Schema";
 
 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "base": S.String,
-    "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "rates": S.Record({ key: S.String, value: S.Number}),
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/734ad.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/734ad.json/default/TopLevel.ts
index 64f630a..f1779a4 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/734ad.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/734ad.json/default/TopLevel.ts
@@ -27,7 +27,7 @@ export class Result extends S.Class<Result>("Result")({
     "be_office_town": S.optional(S.String),
     "code_of_conduct": S.String,
     "contact_country": S.Int,
-    "created_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "created_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "entity": S.String,
     "goals": S.String,
     "head": S.String,
@@ -42,7 +42,7 @@ export class Result extends S.Class<Result>("Result")({
     "id": S.String,
     "identification_code": S.String,
     "info_members": S.String,
-    "last_update_date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "last_update_date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "legal": S.String,
     "legal_status": S.String,
     "main_category": S.Int,
@@ -58,12 +58,12 @@ export class Result extends S.Class<Result>("Result")({
     "networking": S.NullOr(S.String),
     "number_of_natural_persons": S.NullOr(S.Int),
     "other_code_of_conduct": S.NullOr(S.String),
-    "registration_date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "registration_date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "status": Status,
     "structure_members": S.String,
     "sub_category": S.Int,
     "sub_category_title": S.String,
-    "updated_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "updated_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "uri": S.String,
     "web_site_url": S.NullOr(S.String),
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/75912.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/75912.json/default/TopLevel.ts
index f216282..1e8fac1 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/75912.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/75912.json/default/TopLevel.ts
@@ -3,6 +3,6 @@ import * as S from "effect/Schema";
 
 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "base": S.String,
-    "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "rates": S.Record({ key: S.String, value: S.Number}),
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/77392.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/77392.json/default/TopLevel.ts
index f972c47..eda7f99 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/77392.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/77392.json/default/TopLevel.ts
@@ -24,7 +24,7 @@ export type Pha = S.Schema.Type<typeof Pha>;
 
 export class TopLevelElement extends S.Class<TopLevelElement>("TopLevelElement")({
     "designation": S.String,
-    "discovery_date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "discovery_date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "h_mag": S.optional(S.String),
     "i_deg": S.String,
     "moid_au": S.String,
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/7dfa6.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/7dfa6.json/default/TopLevel.ts
index 05ec271..9c87c4b 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/7dfa6.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/7dfa6.json/default/TopLevel.ts
@@ -2,7 +2,7 @@ import * as S from "effect/Schema";
 
 
 export class TotalPopulation extends S.Class<TotalPopulation>("TotalPopulation")({
-    "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "population": S.Int,
 }) {}
 
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/7f568.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/7f568.json/default/TopLevel.ts
index 70c0576..0d03187 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/7f568.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/7f568.json/default/TopLevel.ts
@@ -24,7 +24,7 @@ export class TopLevelElement extends S.Class<TopLevelElement>("TopLevelElement")
     "comments": S.Int,
     "comments_url": S.String,
     "commits_url": S.String,
-    "created_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "created_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "description": S.NullOr(S.String),
     "files": S.Record({ key: S.String, value: File}),
     "forks_url": S.String,
@@ -34,7 +34,7 @@ export class TopLevelElement extends S.Class<TopLevelElement>("TopLevelElement")
     "id": S.String,
     "public": S.Boolean,
     "truncated": S.Boolean,
-    "updated_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "updated_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "url": S.String,
     "user": S.Null,
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/80aff.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/80aff.json/default/TopLevel.ts
index e35c2fe..6a91c18 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/80aff.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/80aff.json/default/TopLevel.ts
@@ -2,12 +2,12 @@ import * as S from "effect/Schema";
 
 
 export class Result extends S.Class<Result>("Result")({
-    "created_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "created_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "id": S.Int,
     "items": S.Int,
     "name": S.String,
     "parent": S.NullOr(S.Int),
-    "updated_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "updated_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "uri": S.String,
 }) {}
 
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/88130.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/88130.json/default/TopLevel.ts
index fd81247..b939e72 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/88130.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/88130.json/default/TopLevel.ts
@@ -94,7 +94,7 @@ export class Results extends S.Class<Results>("Results")({
 
 export class Query extends S.Class<Query>("Query")({
     "count": S.Int,
-    "created": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "created": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "lang": S.String,
     "results": Results,
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/8a62c.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/8a62c.json/default/TopLevel.ts
index 05ec271..9c87c4b 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/8a62c.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/8a62c.json/default/TopLevel.ts
@@ -2,7 +2,7 @@ import * as S from "effect/Schema";
 
 
 export class TotalPopulation extends S.Class<TotalPopulation>("TotalPopulation")({
-    "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "population": S.Int,
 }) {}
 
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/9617f.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/9617f.json/default/TopLevel.ts
index f216282..1e8fac1 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/9617f.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/9617f.json/default/TopLevel.ts
@@ -3,6 +3,6 @@ import * as S from "effect/Schema";
 
 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "base": S.String,
-    "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "rates": S.Record({ key: S.String, value: S.Number}),
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/9929c.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/9929c.json/default/TopLevel.ts
index fd81247..b939e72 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/9929c.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/9929c.json/default/TopLevel.ts
@@ -94,7 +94,7 @@ export class Results extends S.Class<Results>("Results")({
 
 export class Query extends S.Class<Query>("Query")({
     "count": S.Int,
-    "created": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "created": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "lang": S.String,
     "results": Results,
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/9ac3b.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/9ac3b.json/default/TopLevel.ts
index 4d93756..bb7aa08 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/9ac3b.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/9ac3b.json/default/TopLevel.ts
@@ -15,7 +15,7 @@ export const Title = S.Literal(
 export type Title = S.Schema.Type<typeof Title>;
 
 export class Result extends S.Class<Result>("Result")({
-    "created_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "created_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "entity": S.String,
     "first_name": S.String,
     "id": S.String,
@@ -24,7 +24,7 @@ export class Result extends S.Class<Result>("Result")({
     "position": S.NullOr(S.String),
     "status": Status,
     "title": S.NullOr(Title),
-    "updated_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "updated_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "uri": S.String,
 }) {}
 
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/a0496.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/a0496.json/default/TopLevel.ts
index 7e685ae..3daceb3 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/a0496.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/a0496.json/default/TopLevel.ts
@@ -7,19 +7,19 @@ export class Errors extends S.Class<Errors>("Errors")(S.Struct({}).pipe(S.filter
 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "code": S.String,
     "column_names": S.Array(S.String),
-    "data": S.Array(S.Array(S.Union(S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)), S.Number, S.Null))),
+    "data": S.Array(S.Array(S.Union(S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)), S.Number, S.Null))),
     "description": S.String,
     "display_url": S.String,
     "errors": Errors,
     "frequency": S.String,
-    "from_date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "from_date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "id": S.Int,
     "name": S.String,
     "premium": S.Boolean,
     "source_code": S.String,
     "source_name": S.String,
-    "to_date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "to_date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "type": S.String,
-    "updated_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "updated_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "urlize_name": S.String,
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/a1eca.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/a1eca.json/default/TopLevel.ts
index fd81247..b939e72 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/a1eca.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/a1eca.json/default/TopLevel.ts
@@ -94,7 +94,7 @@ export class Results extends S.Class<Results>("Results")({
 
 export class Query extends S.Class<Query>("Query")({
     "count": S.Int,
-    "created": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "created": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "lang": S.String,
     "results": Results,
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/a9691.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/a9691.json/default/TopLevel.ts
index f216282..1e8fac1 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/a9691.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/a9691.json/default/TopLevel.ts
@@ -3,6 +3,6 @@ import * as S from "effect/Schema";
 
 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "base": S.String,
-    "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "rates": S.Record({ key: S.String, value: S.Number}),
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/abb4b.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/abb4b.json/default/TopLevel.ts
index 05ec271..9c87c4b 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/abb4b.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/abb4b.json/default/TopLevel.ts
@@ -2,7 +2,7 @@ import * as S from "effect/Schema";
 
 
 export class TotalPopulation extends S.Class<TotalPopulation>("TotalPopulation")({
-    "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "population": S.Int,
 }) {}
 
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/ac944.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/ac944.json/default/TopLevel.ts
index f216282..1e8fac1 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/ac944.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/ac944.json/default/TopLevel.ts
@@ -3,6 +3,6 @@ import * as S from "effect/Schema";
 
 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "base": S.String,
-    "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "rates": S.Record({ key: S.String, value: S.Number}),
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/b4865.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/b4865.json/default/TopLevel.ts
index f6a3af2..6b080f2 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/b4865.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/b4865.json/default/TopLevel.ts
@@ -36,7 +36,7 @@ export class TopLevelElement extends S.Class<TopLevelElement>("TopLevelElement")
     "recclass": S.String,
     "reclat": S.optional(S.String),
     "reclong": S.optional(S.String),
-    "year": S.optional(S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/))),
+    "year": S.optional(S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)))),
 }) {}
 
 export const TopLevel = S.Array(TopLevelElement);
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/b6f2c.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/b6f2c.json/default/TopLevel.ts
index 05ec271..9c87c4b 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/b6f2c.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/b6f2c.json/default/TopLevel.ts
@@ -2,7 +2,7 @@ import * as S from "effect/Schema";
 
 
 export class TotalPopulation extends S.Class<TotalPopulation>("TotalPopulation")({
-    "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "population": S.Int,
 }) {}
 
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/bb1ec.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/bb1ec.json/default/TopLevel.ts
index 05ec271..9c87c4b 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/bb1ec.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/bb1ec.json/default/TopLevel.ts
@@ -2,7 +2,7 @@ import * as S from "effect/Schema";
 
 
 export class TotalPopulation extends S.Class<TotalPopulation>("TotalPopulation")({
-    "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "population": S.Int,
 }) {}
 
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/cd463.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/cd463.json/default/TopLevel.ts
index f216282..1e8fac1 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/cd463.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/cd463.json/default/TopLevel.ts
@@ -3,6 +3,6 @@ import * as S from "effect/Schema";
 
 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "base": S.String,
-    "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "rates": S.Record({ key: S.String, value: S.Number}),
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/cf0d8.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/cf0d8.json/default/TopLevel.ts
index fd81247..b939e72 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/cf0d8.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/cf0d8.json/default/TopLevel.ts
@@ -94,7 +94,7 @@ export class Results extends S.Class<Results>("Results")({
 
 export class Query extends S.Class<Query>("Query")({
     "count": S.Int,
-    "created": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "created": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "lang": S.String,
     "results": Results,
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/cfbce.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/cfbce.json/default/TopLevel.ts
index f216282..1e8fac1 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/cfbce.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/cfbce.json/default/TopLevel.ts
@@ -3,6 +3,6 @@ import * as S from "effect/Schema";
 
 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "base": S.String,
-    "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "rates": S.Record({ key: S.String, value: S.Number}),
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/d0908.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/d0908.json/default/TopLevel.ts
index 05ec271..9c87c4b 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/d0908.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/d0908.json/default/TopLevel.ts
@@ -2,7 +2,7 @@ import * as S from "effect/Schema";
 
 
 export class TotalPopulation extends S.Class<TotalPopulation>("TotalPopulation")({
-    "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "population": S.Int,
 }) {}
 
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/d23d5.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/d23d5.json/default/TopLevel.ts
index cd7f79d..a5619a8 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/d23d5.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/d23d5.json/default/TopLevel.ts
@@ -3,10 +3,10 @@ import * as S from "effect/Schema";
 
 export class Result extends S.Class<Result>("Result")({
     "acronym": S.NullOr(S.String),
-    "created_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "created_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "id": S.String,
     "name": S.String,
-    "updated_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "updated_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "uri": S.String,
 }) {}
 
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/dbfb3.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/dbfb3.json/default/TopLevel.ts
index d5e4896..ed7b7a2 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/dbfb3.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/dbfb3.json/default/TopLevel.ts
@@ -100,7 +100,7 @@ export class Results extends S.Class<Results>("Results")({
 
 export class Query extends S.Class<Query>("Query")({
     "count": S.Int,
-    "created": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "created": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "lang": S.String,
     "results": Results,
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/dc44f.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/dc44f.json/default/TopLevel.ts
index 9dc093b..01d1eda 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/dc44f.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/dc44f.json/default/TopLevel.ts
@@ -104,7 +104,7 @@ export const Type = S.Literal(
 export type Type = S.Schema.Type<typeof Type>;
 
 export class Ruling extends S.Class<Ruling>("Ruling")({
-    "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "text": S.String,
 }) {}
 
@@ -153,6 +153,6 @@ export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "mkm_id": S.Int,
     "mkm_name": S.String,
     "name": S.String,
-    "releaseDate": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "releaseDate": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "type": S.String,
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/dd1ce.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/dd1ce.json/default/TopLevel.ts
index 9dc093b..01d1eda 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/dd1ce.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/dd1ce.json/default/TopLevel.ts
@@ -104,7 +104,7 @@ export const Type = S.Literal(
 export type Type = S.Schema.Type<typeof Type>;
 
 export class Ruling extends S.Class<Ruling>("Ruling")({
-    "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "text": S.String,
 }) {}
 
@@ -153,6 +153,6 @@ export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "mkm_id": S.Int,
     "mkm_name": S.String,
     "name": S.String,
-    "releaseDate": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "releaseDate": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "type": S.String,
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/df957.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/df957.json/default/TopLevel.ts
index fd81247..b939e72 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/df957.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/df957.json/default/TopLevel.ts
@@ -94,7 +94,7 @@ export class Results extends S.Class<Results>("Results")({
 
 export class Query extends S.Class<Query>("Query")({
     "count": S.Int,
-    "created": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "created": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "lang": S.String,
     "results": Results,
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/e2915.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/e2915.json/default/TopLevel.ts
index 12e9edc..95b1a25 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/e2915.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/e2915.json/default/TopLevel.ts
@@ -99,7 +99,7 @@ export class Results extends S.Class<Results>("Results")({
 
 export class Query extends S.Class<Query>("Query")({
     "count": S.Int,
-    "created": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "created": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "lang": S.String,
     "results": Results,
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/priority/bug2590.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/priority/bug2590.json/default/TopLevel.ts
index ce9bf3c..a8212ed 100644
--- a/base/typescript-effect-schema/test/inputs/json/priority/bug2590.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/priority/bug2590.json/default/TopLevel.ts
@@ -2,8 +2,8 @@ import * as S from "effect/Schema";
 
 
 export class Invoice extends S.Class<Invoice>("Invoice")({
-    "createdAt": S.NullOr(S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/))),
-    "dueDate": S.NullOr(S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/))),
+    "createdAt": S.NullOr(S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)))),
+    "dueDate": S.NullOr(S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value))),
     "name": S.String,
 }) {}
 
diff --git a/base/typescript-effect-schema/test/inputs/json/priority/bug2663.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/priority/bug2663.json/default/TopLevel.ts
index e36b8e2..710c13f 100644
--- a/base/typescript-effect-schema/test/inputs/json/priority/bug2663.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/priority/bug2663.json/default/TopLevel.ts
@@ -2,7 +2,7 @@ import * as S from "effect/Schema";
 
 
 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
-    "birthday": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
-    "lastSeen": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "birthday": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
+    "lastSeen": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "name": S.String,
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/priority/keywords.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/priority/keywords.json/default/TopLevel.ts
index ceef23d..0045d01 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
@@ -1399,7 +1399,7 @@ export class DateTimeStyles extends S.Class<DateTimeStyles>("DateTimeStyles")({
 }) {}
 
 export class DateTime extends S.Class<DateTime>("DateTime")({
-    "DateTime": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "DateTime": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
 }) {}
 
 export class DateParseHandling extends S.Class<DateParseHandling>("DateParseHandling")({
diff --git a/base/typescript-effect-schema/test/inputs/json/samples/github-events.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/samples/github-events.json/default/TopLevel.ts
index dbdc00e..e47485b 100644
--- a/base/typescript-effect-schema/test/inputs/json/samples/github-events.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/samples/github-events.json/default/TopLevel.ts
@@ -88,7 +88,7 @@ export class BaseRepo extends S.Class<BaseRepo>("BaseRepo")({
     "compare_url": S.String,
     "contents_url": S.String,
     "contributors_url": S.String,
-    "created_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "created_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "default_branch": S.String,
     "deployments_url": S.String,
     "description": S.String,
@@ -129,7 +129,7 @@ export class BaseRepo extends S.Class<BaseRepo>("BaseRepo")({
     "owner": User,
     "private": S.Boolean,
     "pulls_url": S.String,
-    "pushed_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "pushed_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "releases_url": S.String,
     "size": S.Int,
     "ssh_url": S.String,
@@ -142,7 +142,7 @@ export class BaseRepo extends S.Class<BaseRepo>("BaseRepo")({
     "tags_url": S.String,
     "teams_url": S.String,
     "trees_url": S.String,
-    "updated_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "updated_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "url": S.String,
     "watchers": S.Int,
     "watchers_count": S.Int,
@@ -163,12 +163,12 @@ export class PayloadPullRequest extends S.Class<PayloadPullRequest>("PayloadPull
     "base": Base,
     "body": S.String,
     "changed_files": S.Int,
-    "closed_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "closed_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "comments": S.Int,
     "comments_url": S.String,
     "commits": S.Int,
     "commits_url": S.String,
-    "created_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "created_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "deletions": S.Int,
     "diff_url": S.String,
     "head": Base,
@@ -182,7 +182,7 @@ export class PayloadPullRequest extends S.Class<PayloadPullRequest>("PayloadPull
     "mergeable": S.Null,
     "mergeable_state": S.String,
     "merged": S.Boolean,
-    "merged_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "merged_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "merged_by": User,
     "milestone": S.Null,
     "number": S.Int,
@@ -195,18 +195,18 @@ export class PayloadPullRequest extends S.Class<PayloadPullRequest>("PayloadPull
     "state": S.String,
     "statuses_url": S.String,
     "title": S.String,
-    "updated_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "updated_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "url": S.String,
     "user": User,
 }) {}
 
 export class Comment extends S.Class<Comment>("Comment")({
     "body": S.String,
-    "created_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "created_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "html_url": S.String,
     "id": S.Int,
     "issue_url": S.String,
-    "updated_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "updated_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "url": S.String,
     "user": User,
 }) {}
@@ -214,10 +214,10 @@ export class Comment extends S.Class<Comment>("Comment")({
 export class Milestone extends S.Class<Milestone>("Milestone")({
     "closed_at": S.Null,
     "closed_issues": S.Int,
-    "created_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "created_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "creator": User,
     "description": S.String,
-    "due_on": S.NullOr(S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/))),
+    "due_on": S.NullOr(S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)))),
     "html_url": S.String,
     "id": S.Int,
     "labels_url": S.String,
@@ -225,7 +225,7 @@ export class Milestone extends S.Class<Milestone>("Milestone")({
     "open_issues": S.Int,
     "state": S.String,
     "title": S.String,
-    "updated_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "updated_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "url": S.String,
 }) {}
 
@@ -252,10 +252,10 @@ export class Issue extends S.Class<Issue>("Issue")({
     "assignee": S.Null,
     "assignees": S.Array(S.Any),
     "body": S.String,
-    "closed_at": S.NullOr(S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/))),
+    "closed_at": S.NullOr(S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)))),
     "comments": S.Int,
     "comments_url": S.String,
-    "created_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "created_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "events_url": S.String,
     "html_url": S.String,
     "id": S.Int,
@@ -268,7 +268,7 @@ export class Issue extends S.Class<Issue>("Issue")({
     "repository_url": S.String,
     "state": S.String,
     "title": S.String,
-    "updated_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "updated_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "url": S.String,
     "user": User,
 }) {}
@@ -284,7 +284,7 @@ export class Actor extends S.Class<Actor>("Actor")({
 
 export class TopLevelElement extends S.Class<TopLevelElement>("TopLevelElement")({
     "actor": Actor,
-    "created_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "created_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
     "id": S.String,
     "org": S.optional(Actor),
     "payload": Payload,
diff --git a/base/typescript-effect-schema/test/inputs/json/samples/null-safe.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/samples/null-safe.json/default/TopLevel.ts
index 6743615..3bfd56e 100644
--- a/base/typescript-effect-schema/test/inputs/json/samples/null-safe.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/samples/null-safe.json/default/TopLevel.ts
@@ -9,7 +9,7 @@ export class Address extends S.Class<Address>("Address")({
 
 export class Item extends S.Class<Item>("Item")({
     "address": S.optional(Address),
-    "created_at": S.optional(S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/))),
+    "created_at": S.optional(S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)))),
     "name": S.String,
     "sex": S.NullOr(S.Int),
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/samples/us-senators.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/samples/us-senators.json/default/TopLevel.ts
index 93d48f7..a8ecdfd 100644
--- a/base/typescript-effect-schema/test/inputs/json/samples/us-senators.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/samples/us-senators.json/default/TopLevel.ts
@@ -80,7 +80,7 @@ export type Title = S.Schema.Type<typeof Title>;
 
 export class Person extends S.Class<Person>("Person")({
     "bioguideid": S.String,
-    "birthday": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "birthday": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "cspanid": S.Int,
     "firstname": S.String,
     "gender": Gender,
@@ -112,7 +112,7 @@ export class ObjectElement extends S.Class<ObjectElement>("ObjectElement")({
     "current": S.Boolean,
     "description": S.String,
     "district": S.Null,
-    "enddate": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "enddate": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "extra": Extra,
     "leadership_title": S.NullOr(S.String),
     "party": Party,
@@ -124,7 +124,7 @@ export class ObjectElement extends S.Class<ObjectElement>("ObjectElement")({
     "senator_class_label": SenatorClassLabel,
     "senator_rank": SenatorRank,
     "senator_rank_label": SenatorRankLabel,
-    "startdate": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
+    "startdate": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
     "state": S.String,
     "title": Title,
     "title_long": RoleTypeLabel,
