将24小时格式的日期字符串转换为Date,但不匹配

时间:2019-01-10 12:29:21

标签: ios swift date

我将这个24小时格式的字符串"2019-01-10 21:00:40"转换为Date对象,但是我得到的是这个2019-01-10 13:00:40。我正在使用格式yyyy-MM-dd HH:mm:ss将字符串转换为日期对象。这里似乎是什么问题?

我正在使用此字符串扩展将字符串转换为日期:

    func toDateWithFormat(_ format:String) -> Date{
    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = format
    guard let date = dateFormatter.date(from: self) else {
        fatalError("ERROR: Date conversion failed due to mismatched format.")
    }
    return date
}

1 个答案:

答案 0 :(得分:2)

这是由于时区不同而发生的。您必须将时区添加到日期中。

使用此方法将时间戳转换为日期

class func timeStampToDate(_timestamp : String, _dateFormat : String) -> String{

        var LOCAL_TIME_ZONE: Int { return TimeZone.current.secondsFromGMT() }

        var date = Date(timeIntervalSince1970: TimeInterval(_timestamp)!)
        date += TimeInterval(truncating: LOCAL_TIME_ZONE as NSNumber)
        let dateFormatter = DateFormatter()
        dateFormatter.timeZone = TimeZone(abbreviation: "GMT") //Set timezone that you want
        dateFormatter.locale = NSLocale.current
        dateFormatter.dateFormat = _dateFormat //Specify your format that you want
        let strDate = dateFormatter.string(from: date)
        return strDate
    }

当您从此方法获取strDate时。转换为日期对象。您将获得当前日期对象