Невозможно создать дату из формата "гггг-мм-дд'т'хч: мм: сс +00:00"
Я хочу конвертировать из строки в дату. Использую ли я правильный формат здесь с "гггг-ММ-дд'ТЧЧ: мм: сс + 00: 00"?
extension String {
func format(_ format:String) -> String {
var date: Date?
let dateFormatterGet = DateFormatter()
let dateFormatterOutput = DateFormatter()
dateFormatterGet.dateFormat = "yyyy-MM-dd'T'HH:mm:ss+00:00"
dateFormatterOutput.dateFormat = format
if let d = dateFormatterGet.date(from: self) {
date = d
}
return dateFormatterOutput.string(from: date!)
}
}
extension Date {
func string(with format: String) -> String {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = format
return dateFormatter.string(from: self)
}
}
1 ответ
Вопрос в строке:
dateFormatterGet.dateFormat = "yyyy-MM-dd'T'HH:mm:ss+00:00"
+00:00
необходимо заменить на xxxx
такие как:
dateFormatterGet.dateFormat = "yyyy-MM-dd'T'HH:mm:ssxxxx"
Ваш код станет:
func format(_ format:String) -> String {
var date: Date?
let dateFormatterGet = DateFormatter()
let dateFormatterOutput = DateFormatter()
dateFormatterGet.dateFormat = "yyyy-MM-dd'T'HH:mm:ssxxxx"
dateFormatterOutput.dateFormat = format
if let d = dateFormatterGet.date(from: self) {
date = d
}
return dateFormatterOutput.string(from: date!)
}
Примечание. Здесь я предполагаю, что используемая вами строка даты будет содержать часовой пояс в виде +xx:xx (например, +02:00) и так далее. Однако для другого формата вам нужно использовать другое количество x
(маленький x
используется, если часовой пояс не содержит Z):
x
-> -08, +0330xx
-> -0800xxx
-> -800, -075254xxxx
-> -8: 00, -07: 52: 54
Если часовой пояс содержит Z
тогда мы используем капитал X
,