이 문자열 날짜 “2014-07-15 06 : 55 : 14.198000 + 00 : 00″을 Swift의 NSDate로 변환하고 싶습니다.
답변
이 시도:
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = /* find out and place date format from
                            * http://userguide.icu-project.org/formatparse/datetime
                            */
let date = dateFormatter.dateFromString(/* your_date_string */)추가 쿼리 는 Objective-C 및 Swift에 대한 Foundation 프레임 워크 의 NSDateFormatter 및 DateFormatter 클래스를 각각 확인하십시오.
스위프트 3 이상 (Swift 4 포함)
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = /* date_format_you_want_in_string from
                            * http://userguide.icu-project.org/formatparse/datetime
                            */
guard let date = dateFormatter.date(from: /* your_date_string */) else {
   fatalError("ERROR: Date conversion failed due to mismatched format.")
}
// use date constant here답변
스위프트 4
import Foundation
let dateString = "2014-07-15" // change to your date format
var dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
let date = dateFormatter.date(from: dateString)
println(date)스위프트 3
import Foundation
var dateString = "2014-07-15" // change to your date format
var dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
var date = dateFormatter.dateFromString(dateString)
println(date)이 코드로 할 수 있습니다.
답변
 func convertDateFormatter(date: String) -> String
 {
    let dateFormatter = NSDateFormatter()
    dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"//this your string date format
    dateFormatter.timeZone = NSTimeZone(name: "UTC")
    let date = dateFormatter.dateFromString(date)
    dateFormatter.dateFormat = "yyyy MMM EEEE HH:mm"///this is what you want to convert format
    dateFormatter.timeZone = NSTimeZone(name: "UTC")
    let timeStamp = dateFormatter.stringFromDate(date!)
    return timeStamp
}스위프트 3을 위해 업데이트되었습니다.
func convertDateFormatter(date: String) -> String
{
    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"//this your string date format
    dateFormatter.timeZone = NSTimeZone(name: "UTC") as TimeZone!
    let date = dateFormatter.date(from: date)
    dateFormatter.dateFormat = "yyyy MMM EEEE HH:mm"///this is what you want to convert format
    dateFormatter.timeZone = NSTimeZone(name: "UTC") as TimeZone!
    let timeStamp = dateFormatter.string(from: date!)
    return timeStamp
}답변
세부
- 스위프트 4, Xcode 9.2
- 스위프트 5, Xcode 10.2 (10E125)
해결책
import Foundation
extension DateFormatter {
    convenience init (format: String) {
        self.init()
        dateFormat = format
        locale = Locale.current
    }
}
extension String {
    func toDate (dateFormatter: DateFormatter) -> Date? {
        return dateFormatter.date(from: self)
    }
    func toDateString (dateFormatter: DateFormatter, outputFormat: String) -> String? {
        guard let date = toDate(dateFormatter: dateFormatter) else { return nil }
        return DateFormatter(format: outputFormat).string(from: date)
    }
}
extension Date {
    func toString (dateFormatter: DateFormatter) -> String? {
        return dateFormatter.string(from: self)
    }
}용법
var dateString = "14.01.2017T14:54:00"
let dateFormatter = DateFormatter(format: "dd.MM.yyyy'T'HH:mm:ss")
let date = Date()
print("original String with date:               \(dateString)")
print("date String() to Date():                 \(dateString.toDate(dateFormatter: dateFormatter)!)")
print("date String() to formated date String(): \(dateString.toDateString(dateFormatter: dateFormatter, outputFormat: "dd MMMM")!)")
let dateFormatter2 = DateFormatter(format: "dd MMM HH:mm")
print("format Date():                           \(date.toString(dateFormatter: dateFormatter2)!)")결과
추가 정보
답변
문자열을 날짜로 자주 구문 분석해야 할 경우 기능을 확장으로 옮길 수 있습니다. sharedCode.swift 파일을 만들고 내 확장명을 거기에 넣었습니다.
extension String
{
    func toDateTime() -> NSDate
    {
        //Create Date Formatter
        let dateFormatter = NSDateFormatter()
        //Specify Format of String to Parse
        dateFormatter.dateFormat = "yyyy-MM-dd hh:mm:ss.SSSSxxx"
        //Parse into NSDate
        let dateFromString : NSDate = dateFormatter.dateFromString(self)!
        //Return Parsed Date
        return dateFromString
    }
}그런 다음 문자열을 NSDate로 변환하려면 다음과 같이 작성할 수 있습니다.
var myDate = myDateString.toDateTime()답변
스위프트 3
func stringToDate(_ str: String)->Date{
    let formatter = DateFormatter()
    formatter.dateFormat="yyyy-MM-dd hh:mm:ss Z"
    return formatter.date(from: str)!
}
func dateToString(_ str: Date)->String{
    var dateFormatter = DateFormatter()
    dateFormatter.timeStyle=DateFormatter.Style.short
    return dateFormatter.string(from: str)
}답변
이 품질 보증 페이지의 코드 조각은 “거꾸로되어 있습니다”…
애플이 가장 먼저 언급 한 것은 포맷터를 캐시한다는 것입니다.
이 작업을 수행하는 방법을 정확히 알려주는 Apple doco 링크 :
효율성을위한 캐시 포맷터
날짜 포맷터를 만드는 것은 저렴한 작업이 아닙니다. … 단일 인스턴스 캐시 …
글로벌 사용 …
let df : DateFormatter = {
    let formatter = DateFormatter()
    formatter.dateFormat = "yyyy-MM-dd"
    return formatter
}()그런 다음 어디서나 해당 포맷터를 사용하십시오.
let s = df.string(from: someDate)또는
let d = df.date(from: someString)또는 DateFormatter에서 다른 많은 편리한 방법 중 하나를 사용하십시오.
그렇게 간단합니다.
(String에서 확장을 작성하면 코드가 완전히 거꾸로되어 있습니다. dateFormatter 호출을 사용할 수 없습니다!)
일반적으로 “formatForClient” “formatForPubNub” “formatForDisplayOnInvoiceScreen”등과 같은 몇 가지 전역이 있습니다.

