diff --git a/base/schema-swift/test/inputs/schema/date-time-or-string.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/date-time-or-string.schema/default/quicktype.swift
index b215321..723437a 100644
--- a/base/schema-swift/test/inputs/schema/date-time-or-string.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/date-time-or-string.schema/default/quicktype.swift
@@ -87,11 +87,23 @@ enum BarEnum: String, Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/date-time.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/date-time.schema/default/quicktype.swift
index ca837b9..8e8d8f0 100644
--- a/base/schema-swift/test/inputs/schema/date-time.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/date-time.schema/default/quicktype.swift
@@ -248,11 +248,23 @@ extension OffsetTime {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/optional-date-time.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/optional-date-time.schema/default/quicktype.swift
index f82c168..9f428c8 100644
--- a/base/schema-swift/test/inputs/schema/optional-date-time.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/optional-date-time.schema/default/quicktype.swift
@@ -71,11 +71,23 @@ extension TopLevel {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/0a358.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/0a358.json/default/quicktype.swift
index 09fbaf5..5d69c27 100644
--- a/base/swift/test/inputs/json/misc/0a358.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/0a358.json/default/quicktype.swift
@@ -182,11 +182,23 @@ extension Result {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/0a91a.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/0a91a.json/default/quicktype.swift
index e424526..8095f0e 100644
--- a/base/swift/test/inputs/json/misc/0a91a.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/0a91a.json/default/quicktype.swift
@@ -1238,11 +1238,23 @@ extension Array where Element == TopLevel.Element {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/16bc5.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/16bc5.json/default/quicktype.swift
index ff8fe52..c64029f 100644
--- a/base/swift/test/inputs/json/misc/16bc5.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/16bc5.json/default/quicktype.swift
@@ -807,11 +807,23 @@ extension Wind {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/262f0.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/262f0.json/default/quicktype.swift
index 10cb7cf..a9bf58f 100644
--- a/base/swift/test/inputs/json/misc/262f0.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/262f0.json/default/quicktype.swift
@@ -813,11 +813,23 @@ extension Wind {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/32d5c.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/32d5c.json/default/quicktype.swift
index bc6d323..57c5545 100644
--- a/base/swift/test/inputs/json/misc/32d5c.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/32d5c.json/default/quicktype.swift
@@ -106,11 +106,23 @@ extension Array where Element == TopLevel.Element {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/337ed.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/337ed.json/default/quicktype.swift
index 6b3dfb2..6ad0786 100644
--- a/base/swift/test/inputs/json/misc/337ed.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/337ed.json/default/quicktype.swift
@@ -374,11 +374,23 @@ enum ResultType: String, Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/3f1ce.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/3f1ce.json/default/quicktype.swift
index 2f6cea9..4b8a940 100644
--- a/base/swift/test/inputs/json/misc/3f1ce.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/3f1ce.json/default/quicktype.swift
@@ -811,11 +811,23 @@ extension Wind {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/4c547.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/4c547.json/default/quicktype.swift
index ff8fe52..c64029f 100644
--- a/base/swift/test/inputs/json/misc/4c547.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/4c547.json/default/quicktype.swift
@@ -807,11 +807,23 @@ extension Wind {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/54d32.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/54d32.json/default/quicktype.swift
index b13897c..a8e9854 100644
--- a/base/swift/test/inputs/json/misc/54d32.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/54d32.json/default/quicktype.swift
@@ -187,11 +187,23 @@ enum Status: String, Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/5eae5.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/5eae5.json/default/quicktype.swift
index 3e13dae..bc68b71 100644
--- a/base/swift/test/inputs/json/misc/5eae5.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/5eae5.json/default/quicktype.swift
@@ -90,11 +90,23 @@ extension Array where Element == TopLevel.Element {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/6dec6.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/6dec6.json/default/quicktype.swift
index 62fd053..935c993 100644
--- a/base/swift/test/inputs/json/misc/6dec6.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/6dec6.json/default/quicktype.swift
@@ -813,11 +813,23 @@ extension Wind {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/734ad.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/734ad.json/default/quicktype.swift
index f71745a..8928c9f 100644
--- a/base/swift/test/inputs/json/misc/734ad.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/734ad.json/default/quicktype.swift
@@ -395,11 +395,23 @@ enum Status: String, Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/77392.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/77392.json/default/quicktype.swift
index b036295..1881116 100644
--- a/base/swift/test/inputs/json/misc/77392.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/77392.json/default/quicktype.swift
@@ -132,11 +132,23 @@ extension Array where Element == TopLevel.Element {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/7f568.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/7f568.json/default/quicktype.swift
index a0a4367..186e9f2 100644
--- a/base/swift/test/inputs/json/misc/7f568.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/7f568.json/default/quicktype.swift
@@ -206,11 +206,23 @@ extension Array where Element == TopLevel.Element {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/80aff.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/80aff.json/default/quicktype.swift
index c73e70a..322e204 100644
--- a/base/swift/test/inputs/json/misc/80aff.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/80aff.json/default/quicktype.swift
@@ -186,11 +186,23 @@ extension Result {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/88130.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/88130.json/default/quicktype.swift
index ff8fe52..c64029f 100644
--- a/base/swift/test/inputs/json/misc/88130.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/88130.json/default/quicktype.swift
@@ -807,11 +807,23 @@ extension Wind {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/9929c.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/9929c.json/default/quicktype.swift
index ff8fe52..c64029f 100644
--- a/base/swift/test/inputs/json/misc/9929c.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/9929c.json/default/quicktype.swift
@@ -807,11 +807,23 @@ extension Wind {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/9ac3b.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/9ac3b.json/default/quicktype.swift
index f77f3f2..66bbd83 100644
--- a/base/swift/test/inputs/json/misc/9ac3b.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/9ac3b.json/default/quicktype.swift
@@ -212,11 +212,23 @@ enum Title: String, Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/a0496.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/a0496.json/default/quicktype.swift
index 5eae517..b6e1a21 100644
--- a/base/swift/test/inputs/json/misc/a0496.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/a0496.json/default/quicktype.swift
@@ -193,11 +193,23 @@ extension Errors {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/a1eca.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/a1eca.json/default/quicktype.swift
index ff8fe52..c64029f 100644
--- a/base/swift/test/inputs/json/misc/a1eca.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/a1eca.json/default/quicktype.swift
@@ -807,11 +807,23 @@ extension Wind {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/b4865.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/b4865.json/default/quicktype.swift
index 8144a0b..8720b89 100644
--- a/base/swift/test/inputs/json/misc/b4865.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/b4865.json/default/quicktype.swift
@@ -183,11 +183,23 @@ extension Array where Element == TopLevel.Element {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/cf0d8.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/cf0d8.json/default/quicktype.swift
index ff8fe52..c64029f 100644
--- a/base/swift/test/inputs/json/misc/cf0d8.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/cf0d8.json/default/quicktype.swift
@@ -807,11 +807,23 @@ extension Wind {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/d23d5.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/d23d5.json/default/quicktype.swift
index 8dc2f7f..dbcc155 100644
--- a/base/swift/test/inputs/json/misc/d23d5.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/d23d5.json/default/quicktype.swift
@@ -182,11 +182,23 @@ extension Result {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/dbfb3.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/dbfb3.json/default/quicktype.swift
index 813fae5..1dc1e53 100644
--- a/base/swift/test/inputs/json/misc/dbfb3.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/dbfb3.json/default/quicktype.swift
@@ -812,11 +812,23 @@ extension Wind {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/df957.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/df957.json/default/quicktype.swift
index ff8fe52..c64029f 100644
--- a/base/swift/test/inputs/json/misc/df957.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/df957.json/default/quicktype.swift
@@ -807,11 +807,23 @@ extension Wind {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/e2915.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/e2915.json/default/quicktype.swift
index 5b2538e..d1e9958 100644
--- a/base/swift/test/inputs/json/misc/e2915.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/e2915.json/default/quicktype.swift
@@ -811,11 +811,23 @@ extension Wind {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/bug2590.json/default/quicktype.swift b/head/swift/test/inputs/json/priority/bug2590.json/default/quicktype.swift
index a832597..6c9b21b 100644
--- a/base/swift/test/inputs/json/priority/bug2590.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/bug2590.json/default/quicktype.swift
@@ -103,11 +103,23 @@ extension Invoice {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/bug2663.json/default/quicktype.swift b/head/swift/test/inputs/json/priority/bug2663.json/default/quicktype.swift
index 204a87d..bc52953 100644
--- a/base/swift/test/inputs/json/priority/bug2663.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/bug2663.json/default/quicktype.swift
@@ -59,11 +59,23 @@ extension TopLevel {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/keywords.json/default/quicktype.swift b/head/swift/test/inputs/json/priority/keywords.json/default/quicktype.swift
index f57dd74..b1ac4c0 100644
--- a/base/swift/test/inputs/json/priority/keywords.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/keywords.json/default/quicktype.swift
@@ -17480,11 +17480,23 @@ extension Yield {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/keywords.json/objective-c-support-true__struct-or-class-class--f14372afa3e4/quicktype.swift b/head/swift/test/inputs/json/priority/keywords.json/objective-c-support-true__struct-or-class-class--f14372afa3e4/quicktype.swift
index 58349c0..a6d4421 100644
--- a/base/swift/test/inputs/json/priority/keywords.json/objective-c-support-true__struct-or-class-class--f14372afa3e4/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/keywords.json/objective-c-support-true__struct-or-class-class--f14372afa3e4/quicktype.swift
@@ -19663,11 +19663,23 @@ extension Yield {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/keywords.json/protocol-equatable--bd9068f466c1/quicktype.swift b/head/swift/test/inputs/json/priority/keywords.json/protocol-equatable--bd9068f466c1/quicktype.swift
index 2f3b7b0..332ae5c 100644
--- a/base/swift/test/inputs/json/priority/keywords.json/protocol-equatable--bd9068f466c1/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/keywords.json/protocol-equatable--bd9068f466c1/quicktype.swift
@@ -19664,11 +19664,23 @@ extension Yield {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/keywords.json/sendable-true--1c3982c78639/quicktype.swift b/head/swift/test/inputs/json/priority/keywords.json/sendable-true--1c3982c78639/quicktype.swift
index 229abcb..dbbd761 100644
--- a/base/swift/test/inputs/json/priority/keywords.json/sendable-true--1c3982c78639/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/keywords.json/sendable-true--1c3982c78639/quicktype.swift
@@ -17480,11 +17480,23 @@ extension Yield {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/samples/github-events.json/default/quicktype.swift b/head/swift/test/inputs/json/samples/github-events.json/default/quicktype.swift
index 06b8284..b8f1530 100644
--- a/base/swift/test/inputs/json/samples/github-events.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/samples/github-events.json/default/quicktype.swift
@@ -1659,11 +1659,23 @@ extension Array where Element == TopLevel.Element {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/samples/null-safe.json/default/quicktype.swift b/head/swift/test/inputs/json/samples/null-safe.json/default/quicktype.swift
index 43044f6..7c8aa54 100644
--- a/base/swift/test/inputs/json/samples/null-safe.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/samples/null-safe.json/default/quicktype.swift
@@ -159,11 +159,23 @@ extension Address {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
