Вы можете расширить Formatter и создать собственный статический DateFormatter.
extension Formatter {
static let custom: DateFormatter = {
let formatter = DateFormatter()
formatter.locale = Locale(identifier: "en_US_POSIX")
formatter.dateFormat = "eee MMM dd HH:mm:ss ZZZZ yyyy"
return formatter
}()
}
И если вы хотите, чтобы Tweet проанализировал вашу строку даты, вы можете предоставить свой собственный инициализатор декодера следующим образом:
extension Tweet {
public init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: CodingKeys.self)
id = try container.decode(String.self, forKey: .id)
text = try container.decode(String.self, forKey: .text)
createdAt = try Formatter.custom.date(from: container.decode(String.self, forKey: .createdAt))!
}
}
Это предполагает, что ваша строка даты правильно отформатирована. Если ваша строка даты не гарантирует правильное форматирование, вы можете сделать свойство Date необязательным и удалить принудительную развертку из метода date (from: String).