#swift
#swift
Вопрос:
В настоящее время я конвертирую этот формат даты: "2021-11-26T15:48:43Z"
в "2021-11-26"
- Как я могу его перевернуть? Итак, это выглядит так:
11-26-2021
- Что, если бы я хотел получить только время? Нравится:
11:13pm
Это мой код:
func formatDateToStringMMDDYYYY(tempDay: String) -> String {
let dateFormatter = ISO8601DateFormatter()
let timeZone = TimeZone.current
let date = dateFormatter.date(from: tempDay)
dateFormatter.timeZone = timeZone
dateFormatter.formatOptions = [
.withFullDate,
.withDashSeparatorInDate
]
let dateFormatted = dateFormatter.string(from: date!)
return dateFormatted
}
Я искал ответы в документах Apple, но я не вижу возможности для этого. Есть ли другой способ добиться этого?
Редактировать:
Я попытался переформатировать дату после первоначального формата, но она возвращает ноль, это то, что я пробовал:
let dateFormatter2 = DateFormatter()
dateFormatter2.dateFormat = "hh:mm a"
dateFormatter2.amSymbol = "AM"
dateFormatter2.pmSymbol = "PM"
let date2 = dateFormatter2.date(from: dateFormatted)
Комментарии:
1. Вы можете использовать отдельный форматировщик для форматирования вывода и использовать пользовательский формат даты.
2. Я пробовал это, но он возвращает ноль, см. Мой Отредактированный ответ @JoakimDanielson
3.
ISO8601DateFormatter
Не знает am / pm ни другого порядка компонентов даты какyyyyMMdd
. Вы должны преобразоватьreturn dateFormatter2.string(from: date)
.4. Это сработало! Я готовлю решение и опубликую его, спасибо! @vadian
5. Я, конечно, имел в виду, что вы должны использовать проанализированный объект Date во втором форматере, а не строку.
Ответ №1:
Это решение для преобразования его в AM / PM время, и то же самое относится к другому:
Стиль вывода: 10:48 PM
func formatIS08601DateToStringHourMin(tempDay: String) -> String {
let ISO8601DateFormatter = ISO8601DateFormatter()
let date = ISO8601DateFormatter.date(from: tempDay)
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "hh:mm a"
dateFormatter.amSymbol = "AM"
dateFormatter.pmSymbol = "PM"
let finalDateFormatted = dateFormatter.string(from: date!)
return finalDateFormatted
}
Спасибо @vadian amp; @Joakim_Danielson за помощь.