Невозможно изменить формат даты в swift - PullRequest
0 голосов
/ 02 января 2019

Я получаю дату 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 ]

0 голосов
/ 02 января 2019

Вы в замешательстве. Объект Date не имеет формата. Он записывает момент времени. Вы должны преобразовать его в дату Строка , чтобы задать формат.

Ваш код делает то, что хорошо. Тем не менее, последнее, что вы делаете, это конвертируете его обратно в Date и отбрасываете отформатированную строку, которую вы создали. Это не имеет смысла.

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

0 голосов
/ 02 января 2019

Вы делаете это неправильно. Если вам нужно показать дату, вы используете отформатированный 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)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...