Как преобразовать строку в дату в строку в Swift? - PullRequest
0 голосов
/ 24 марта 2019

У меня есть строка этого типа, "2019-03-22", и я хочу преобразовать ее в эту строку, "22 марта 2019", в Swift.

Это выглядит просто, и я попробовалнесколько разных способов.Но я еще не понял.

Лучший код, который у меня есть, это:

let originalDate = "2019-03-22"
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "MMMM dd, yyyy"
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
let newDate = dateFormatter.string(from:originalDate)!
print(newDate)

Но я получаю эту ошибку Cannot convert value of type 'String' to expected argument type 'Date'

Как мнеисправить это?

Ответы [ 3 ]

2 голосов
/ 24 марта 2019

Вы пытаетесь преобразовать string(from: string, что невозможно.

Сначала необходимо преобразовать строку в дату в формате yyyy-MM-dd изатем измените формат и преобразуйте его обратно в строку.

let dateString = "2019-03-22"
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
let date = dateFormatter.date(from: dateString)!
dateFormatter.dateFormat = "MMMM dd, yyyy"
let newDate = dateFormatter.string(from:date)
print(newDate)
1 голос
/ 24 марта 2019

Вам необходимо прочитать предоставленную строку даты.

dateFormatter.dateFormat = "yyyy-MM-dd"

Теперь прочитайте строку даты.

let aDate = dateFormatter.date(from: originalDate)

И затем вы предоставите новый формат

dateFormatter.dateFormat = "MMMM dd, yyyy"
let newDateString = dateFormat.string(from: aDate) 

Теперь вывод:

22 марта 2019 г.

Полный код:

let originalDate = "2019-03-22"
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
let aDate = dateFormatter.date(from: originalDate)!
dateFormatter.dateFormat = "MMMM dd, yyyy"
let newDate = dateFormatter.string(from: aDate)
print(newDate)
0 голосов
/ 24 марта 2019

Я уже использую следующий метод в моем проекте:

func dateFormat(_ originalDate: String) -> String{
     let dateFormatter = DateFormatter()
     dateFormatter.dateFormat = "yyyy-MM-dd"
     dateFormatter.locale = Locale(identifier: "en_US_POSIX")
     let date = dateFormatter.date(from: originalDate)
     dateFormatter.dateFormat = "MMMM dd, yyyy"
     let valueDate = dateFormatter.string(from: date!)
     return valueDate
}

Вы можете использовать метод следующим образом:

dateFormat("2019-03-22") // March 22, 2019
...