                     case .url:
                         lines.append("\(indent2)guard let \(propertyName)String = json[\"\($0.name)\"] as? String else { return nil }")
                         lines.append("\(indent2)guard let \(propertyName) = URL(string: \(propertyName)String) else { return nil }")
-                    case .date:
-                        break
+                    case let .date(type):
+                        switch type {
+                        case .iso8601:
+                            let dateString = "\(propertyName)String"
+                            lines.append("\(indent2)guard let \(dateString) = json[\"\($0.name)\"] as? String else { return nil }")
+                            lines.append("\(indent2)guard let \(propertyName) = DateFormatter.iso8601.date(from: \(dateString)) else { return nil }")
+                        case .dateOnly:
+                            let dateString = "\(propertyName)String"
+                            lines.append("\(indent2)guard let \(dateString) = json[\"\($0.name)\"] as? String else { return nil }")
+                            lines.append("\(indent2)guard let \(propertyName) = DateFormatter.dateOnly.date(from: \(dateString)) else { return nil }")
+                        case .secondsSince1970:
+                            let dateTimeInterval = "\(propertyName)TimeInterval"
+                            lines.append("\(indent2)guard let \(dateTimeInterval) = json[\"\($0.name)\"] as? TimeInterval else { return nil }")
+                            lines.append("\(indent2)let \(propertyName) = Date(timeIntervalSince1970: \(dateTimeInterval))")
+                        }
                     case .any:
                         break
                     case .null:

                type: Type(plainType: .primitive(.url), status: .normal)
            )
            return .property(property)
        case .date:
            let property = Property(
                name: name,
                type: Type(plainType: .primitive(.date), status: .normal)
            )
            return .property(property)
        }

    case double
    case string
    case url
    case date(type: Value.DateType)
    case any
    indirect case null(PlainType)
}
