“EEE,dd MMM yyyy hh:mm:ss zzz”字符串转换为日期

时间:2017-04-15 16:47:36

标签: swift string date extension-methods

Dears,帮助将字符串转换为“Mon,2017年4月10日,太平洋时间10:00:00”到日期 不幸的是,我的代码会导致错误:

extension String {    
    func getDate() -> Date {
       let formatter = DateFormatter()

       formatter.dateFormat = "EEE, dd MMM yyyy hh:mm:ss zzz"
       return formatter.date(from: self)! // Returns "Mon, 10 Apr 2017, 10:00:00 PDT"
    }
}

1 个答案:

答案 0 :(得分:3)

有两个问题。您需要在年后添加逗号并在dateFormat中使用HH(24小时)而不是hh(12小时):

extension Formatter {
    static let date = DateFormatter()
}

extension String {
    var getDate: Date? {
        Formatter.date.locale = Locale(identifier: "en_US_POSIX")
        Formatter.date.dateFormat = "EEE, dd MMM yyyy, HH:mm:ss zzz"
        return Formatter.date.date(from: self)
    }
}
let dateString =  "Mon, 10 Apr 2017, 10:00:00 PDT"
if let date = dateString.getDate {
    Formatter.date.timeZone = TimeZone(abbreviation: "PDT")
    Formatter.date.string(from: date)  // Mon, 10 Apr 2017, 10:00:00 PDT
}