如何在NSDate中附加UTC

时间:2017-10-16 20:48:15

标签: ios swift nsdate

所以目前我有这个扩展名为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
}()
}

2 个答案:

答案 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)
}