...;)

я свидание "2017-12-31" какString.

Наконец, я хочу получить только месяц: «12» как строка.

Поэтому я подумал, что я могу изменить его наDate с использованием форматера даты

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

Что мне делать дальше?

Ответы на вопрос(3)

let dateString = "2017-12-31"    
let formatter = DateFormatter()
formatter.calendar = Calendar(identifier: Calendar.Identifier.iso8601)    formatter.timeZone = TimeZone(identifier:  TimeZone.autoupdatingCurrent.identifier)
formatter.dateFormat = "yyyy-MM-dd" 
let localDate = formatter.date(from: dateString) 
formatter.dateFormat = "MM" 
let strMonth = formatter.string(from: localDate!)
print("Month is:",strMonth)

По-другому

let dateString = "2017-12-31"
let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MM-dd"
let localDate = formatter.date(from: dateString)
let month = String(NSCalendar.current.component(.month, from: localDate!))
print(month)
 KUNWOO MYUNG25 нояб. 2017 г., 12:23
Первый работает с данными из firebase, спасибо!
 Leo Dabus25 нояб. 2017 г., 14:31
текущий часовой пояс используется по умолчанию, поэтому он не нужен. Кстати, почему бы не простоformatter.timeZone = .autoupdatingCurrent, И не заставляйте распаковывать свое свидание. Это приведет к сбою приложения в случае неверной строки даты.
 Leo Dabus25 нояб. 2017 г., 14:34
И Swift 3 или позже вы должны бросить NS и использоватьCalendar вместоNSCalendar, Обратите внимание, что для автономного месяца рекомендуется использовать"LL" вместо"MM" i.stack.imgur.com/lkYVY.png
Решение Вопроса

Сначала вы должны использоватьDateFormatter создать временныйDate объект из вашего источникаString объект. Тогда вы должны использовать его, чтобы создать свой окончательныйString из временногоDate объект.

let dateString = "2017-12-31"
let dateFormatter = DateFormatter()

// set the dateFormatter's dateFormat to the dateString's format
dateFormatter.dateFormat = "yyyy-MM-dd"

// create date object
guard let tempDate = dateFormatter.date(from: dateString) else {
    fatalError("wrong dateFormat")
}

// set the dateFormatter's dateFormat to the output format you wish to receive
dateFormatter.dateFormat = "LL" // LL is the stand-alone month

let month = dateFormatter.string(from: tempDate)
 André Slotta25 нояб. 2017 г., 11:27
Рад, что смог помочь. Пожалуйста!
 KUNWOO MYUNG25 нояб. 2017 г., 11:26
Спасибо! Так хорошо сработало.

func getMonthFromDateString(strDate: String) -> String {
        let formatter = DateFormatter()
        formatter.dateFormat = "yyyy-MM-dd"
        let date = formatter.date(from: strDate) // Convert String File To Date
        formatter.dateFormat = "MM"
        let strMM = formatter.string(from: date!) // Convert date to string
        return strMM
}
 André Slotta25 нояб. 2017 г., 11:27
Я не думаю, что это работает, потому чтоyourDate неправильно ... должно бытьdate...;)
 KUNWOO MYUNG25 нояб. 2017 г., 11:26
Спасибо :) Это работает!

Ваш ответ на вопрос