Невозможно изменить формат даты в swift
Я встречаюсь 2019-01-02 18:10:00 +0000
как это сейчас, я хочу преобразовать его в dd/MM/yyyy HH:mm
формат, но я не могу его получить.
Я использую этот метод в продлении даты
func getDate() -> Date {
let formatter = DateFormatter()
formatter.timeZone = TimeZone(abbreviation: "UTC")
formatter.dateFormat = "dd/MM/yyyy HH:mm"
let dateString = formatter.string(from: self)
return formatter.date(from: dateString) ?? Date()
}
когда xcode выполняет эту строку
let dateString = formatter.string(from: self)
результат в формате, который я хочу, но когда исполняется последняя строка, дата возвращается к старому формату
2 ответа
Вы делаете это не правильно. Если вам нужно показать дату, вы используете отформатированный String
а не Date
объект.
func getDate() -> String {
let formatter = DateFormatter()
// Set the appropriate time zone or locale
formatter.dateFormat = "dd/MM/yyyy HH:mm"
return formatter.string(from: self)
}
Ты смущен. Date
Объект не имеет формата. Он записывает момент времени. Вы должны преобразовать его в строку даты, чтобы придать ей формат.
Ваш код делает то, что хорошо. Тем не менее, последнее, что вы делаете, это преобразовать его обратно в Date
и отменить отформатированную строку, которую вы создали. Это бессмысленно.
Весьма вероятно, что серверу требуется строка даты. Вы должны переписать свою функцию, чтобы она возвращала строку даты, как в ответе Ракешы Шастри.