1. 문자열 → 날짜 / 날짜 → 문자열

//date -> String, String -> Date
extension String {
    func toDate() -> Date? { //"yyyy-MM-dd HH:mm:ss"
        let dateFormatter = DateFormatter()
        dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
        dateFormatter.timeZone = TimeZone(identifier: "UTC")
        if let date = dateFormatter.date(from: self) {
            return date
        } else {
            return nil
        }
    }
}

extension Date {
    func toString() -> String {
        let dateFormatter = DateFormatter()
        dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
        dateFormatter.timeZone = TimeZone(identifier: "UTC")
        return dateFormatter.string(from: self)
    }
}
//출처: <https://wiwi-pe.tistory.com/30> [선생님 개발블로그가 하고싶어요.:티스토리]

2. 날짜연산

let input = "2013.12.13".toDate() ?? Date()
//특정 개월수 이후 날짜
var dateComponent = DateComponents()
dateComponent.month = 24
let futureDate = Calendar.current.date(byAdding: dateComponent, to: input) ?? Date()
print(futureDate.toString())
//특정 날수 이후 날짜
var dateComponentDay = DateComponents()
dateComponentDay.day = 3210
let futureday = Calendar.current.date(byAdding: dateComponentDay, to: input) ?? Date()
print(futureday.toString())

let someday = DateComponents(year: 2022,month: 3,day: 1)
let tmp = Calendar.current.dateComponents([.day], from: input,to: Date()).day

//날짜 비교연산도 가능
futureday > futureDate
futureday == futureDate
futureday < futureDate
print(input)
print(input.toString())