所以目前我有这个扩展名为Formatter,返回时间:16/10/17 08:37:50 GMT但我需要16/10/17 08:37:50 PM UTC 与UTC作为附加到nsdate。我怎样才能做到这一点?
以下是我的代码:
extension Formatter {
static let iso8601: DateFormatter = {
let formatter = DateFormatter()
formatter.calendar = Calendar(identifier: .iso8601)
formatter.locale = Locale(identifier: "en_US_POSIX")
formatter.timeZone = NSTimeZone(abbreviation:"UTC") as TimeZone!
formatter.amSymbol = "AM"
formatter.pmSymbol = "PM"
formatter.dateFormat = "dd/MM/yy hh:mm:ss a zzz"
return formatter
}()
}
答案 0 :(得分:2)
只需更改日期格式化程序,即可在格式字符串中使用'UTC'
代替zzz
:
formatter.dateFormat = "dd/MM/yy hh:mm:ss a 'UTC'"
您需要将UTC
之类的字符串文字放在单引号中,这样它们就不会被解释为格式字符。
请注意,如果将日期格式设置为UTC时区,则上述仅才能正常工作。如果您将其设置为其他时区,则输出字符串仍将以UTC
结束,这将是错误的。
答案 1 :(得分:0)
这里我要更改当前日期以保存相同的小时和日期,但只更改时区。试试这是否适合你
var now: Date {
let formatter = DateFormatter()
formatter.dateFormat = Const.dateFormat
formatter.timeZone = TimeZone.current
let date = Date()
let dateFormatter = DateFormatter()
dateFormatter.calendar = Calendar(identifier: .iso8601)
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
dateFormatter.dateFormat = "dd/MM/yy hh:mm:ss a zzz"
dateFormatter.timeZone = TimeZone(abbreviation: "UTC")
let str = dateFormatter.string(from: date)
return formatter.date(from: str)
}