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

Why doesn't this time conversion from UTC to local code work?

        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 格式提供字符串日期,我正在尝试将其转换为当地时间。当被问到这个问题时,此代码类似于本网站中给出的数十个示例,但它不起作用。

这是 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