Невозможно изменить формат даты в 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и отменить отформатированную строку, которую вы создали. Это бессмысленно.

Весьма вероятно, что серверу требуется строка даты. Вы должны переписать свою функцию, чтобы она возвращала строку даты, как в ответе Ракешы Шастри.

Другие вопросы по тегам