swift - "EEE, dd MMM yyyy hh:mm:ss zzz"字符串转换为日期

标签 swift string date extension-methods

亲爱的,请帮忙将字符串“Mon, 10 Apr 2017, 10:00:00 PDT”转换为 Date 我的代码如下,不幸的是它导致错误:

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"
    }
}

最佳答案

有两个问题。您需要在年份后面添加逗号,并在 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
}

关于swift - "EEE, dd MMM yyyy hh:mm:ss zzz"字符串转换为日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43428646/

相关文章:

iOS 照片库 - 如何获取真实的文件名?

python - 将字典中的列表转换为字符串?

java - 如何将包含数字和字母的字符串分成仅数字?

mysql - 如何加入表格并根据每次匹配限制为 1 的日期差异获取结果?

javascript - 出生日期计算的年龄 (dd/mm/yyyy) 格式不起作用

sql - 在 SQL Server 中查找去年的日期

swift - 滑动操作延迟

swift - UISwipeGestureRecognizer 添加到 UIView 的 subview 时无法识别

ios - 如何生成签名方法OAuth1

C++相同的字符串无法通过比较检查