如何使用 Swift 中的时区格式化日期?
How to format a date using timezone in Swift?
我检查了其他问题,但 none 对我帮助很大。
我有以下字符串:
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" 使用 timezone 例如 "+8" 。我尝试了以下方法,但它不起作用:
let dateFormatter = DateFormatter()
dateFormatter.timeZone = TimeZone(abbreviation: "UTC+8")
dateFormatter.dateFormat = "hh:mm a"
let requiredTime = dateFormatter.string(from: convertedDate!)
谁能帮我解决这个问题?
您想要的格式是hh:mm a Z
,它将提供+0800
。
您想创建一个距格林威治标准时间 +8 小时的 TimeZone
,通常我更喜欢使用适当的缩写(即 AET
),但我想如果您没有,您可以使用 secondsFromGMT
创建 TimeZone
,例如...
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
我检查了其他问题,但 none 对我帮助很大。
我有以下字符串:
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" 使用 timezone 例如 "+8" 。我尝试了以下方法,但它不起作用:
let dateFormatter = DateFormatter()
dateFormatter.timeZone = TimeZone(abbreviation: "UTC+8")
dateFormatter.dateFormat = "hh:mm a"
let requiredTime = dateFormatter.string(from: convertedDate!)
谁能帮我解决这个问题?
您想要的格式是hh:mm a Z
,它将提供+0800
。
您想创建一个距格林威治标准时间 +8 小时的 TimeZone
,通常我更喜欢使用适当的缩写(即 AET
),但我想如果您没有,您可以使用 secondsFromGMT
创建 TimeZone
,例如...
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