如何在Swift中使用时区格式化日期?

时间:2018-05-05 07:00:53

标签: ios swift timestamp nsdateformatter

我已经检查了其他问题,但没有一个对我有太大帮助。

我有以下字符串:

let dateString = "2018-04-29T21:00:00.000Z"

我已使用以下内容成功将其转换为日期:

let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
let convertedDate = dateFormatter.date(from: dateString)

但现在我只想要时间“hh:mm a”使用时区,例如“+ 8”。我尝试过以下方式,但它不起作用:

let dateFormatter = DateFormatter()
dateFormatter.timeZone = TimeZone(abbreviation: "UTC+8")
dateFormatter.dateFormat = "hh:mm a"
let requiredTime = dateFormatter.string(from: convertedDate!)

任何人都可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

您想要的格式是hh:mm a Z,它将提供+0800

你想创建一个距离GMT +8小时的TimeZone,通常我更喜欢使用适当的abrivations(即AET),但我想如果你没有,你可以使用TimeZone创建secondsFromGMT,例如......

let tz = TimeZone(secondsFromGMT: 8 * 60 * 60)
let toFormatter = DateFormatter()
toFormatter.timeZone = tz
toFormatter.dateFormat = "hh:mm a Z"
let requiredTime = toFormatter.string(from: convertedDate!)

根据您的示例数据,将生成值...

05:00 AM +0800