Быстрое Преобразование Даты в Дату с dateFormat - PullRequest
0 голосов
/ 15 мая 2018

Я знаю преобразование даты в строку // строку в дату

с

let formatter = DateFormatter()
formatter.dateFormat = "yyyy MM dd"

let date = formatter.date ( from: String ) 

или

let string = formatter.string ( from: Date )

, но я хочупреобразовать дату в дату с таким форматированием "гггг-мм-дд'т'чч: мм: ссZ" в "гггг-мм-дд" в формате даты.

Есть ли в любом случае сделать это с одна строка ?

Ответы [ 3 ]

0 голосов
/ 15 мая 2018

(при условии, что одна строка кода означает один оператор)

Если вы просто хотите удалить другие биты и оставить только год, месяц, день, вы можете просто удалить первые символы из строки:

let inputString = "2018-05-15T16:37:55+0100"
let outputString = String(inputString.prefix(10))

Но если вы хотите преобразовать дату в другой часовой пояс , вам нужно использовать DateFormatter, для которого требуется более 1 строки кода.

Кроме того, этот подход подстроки может не работать в других локалях, где даты отформатированы с другим количеством символов.

0 голосов
/ 15 мая 2018

Нет, но вы всегда можете написать расширение, которое сделает эту работу за вас.

Вы должны расширить Date с помощью функции, которая получает формат (yyyy-MM-dd'T'HH:mm:ssZ) в качестве аргумента, создайте специальный DateFormatter, а затем выполните обычное преобразование с переходами между String и Date.

К сожалению, нет стандартного пути.

0 голосов
/ 15 мая 2018

Ответ на ваш вопрос: Нет .

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

Может ли это вам помочь:

extension String {


    func convertDateString() -> String? {
        return convert(dateString: self, fromDateFormat: "yyyy-MM-dd'T'HH:mm:ssZ", toDateFormat: "yyyy-MM-dd")
    }


    func convert(dateString: String, fromDateFormat: String, toDateFormat: String) -> String? {

        let fromDateFormatter = DateFormatter()
        fromDateFormatter.dateFormat = fromDateFormat

        if let fromDateObject = fromDateFormatter.date(from: dateString) {

            let toDateFormatter = DateFormatter()
            toDateFormatter.dateFormat = toDateFormat

            let newDateString = toDateFormatter.string(from: fromDateObject)
            return newDateString
        }

        return nil
    }

}

Использовать однострочный код:

let newDateString = "my date string".convertDateString()
...