为什么这次从 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
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