为什么这次从UTC转换为本地代码不起作用?

时间:2017-04-27 10:42:08

标签: ios swift nsdate nsdateformatter

        let dateFormatter = DateFormatter()
        let dateFormatter2 = DateFormatter()

        dateFormatter.timeZone = TimeZone(abbreviation: "UTC")

        dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ"

        let date = dateFormatter.date(from: event!)

        dateFormatter2.timeZone = TimeZone.current
        let dateString = dateFormatter2.string(from: date!)

        let finalDate = dateFormatter2.date(from: dateString)
        return finalDate!

我有体育赛事,以UTC为单位提供字符串日期,我想将其转换为当地时间。当提到这个问题时,这段代码类似于本网站提供的几十个例子,但它不起作用。

1 个答案:

答案 0 :(得分:1)

这是iso8601格式化程序:

static let iso8601: DateFormatter = {
    let formatter = DateFormatter()
    formatter.calendar = Calendar(identifier: .iso8601)
    formatter.locale = Locale(identifier: "en_US_POSIX")
    formatter.timeZone = TimeZone(secondsFromGMT: 0)
    formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZZZZZ"
    return formatter
}()

这会将您的字符串转换为Date

您需要添加时差,最有可能是TimeZone.autoupdatingCurrent