如何在 NSDate 中附加 UTC

How to get UTC appended in NSDate

所以目前我有 Formatter 的这个扩展 returns : 16/10/17 08:37:50 PM 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
}()
}

我在这里更改当前日期以保存相同的时间和日期,但仅更改时区。试试这是否适合你

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

只需将您的日期格式化程序更改为使用 'UTC' 代替格式字符串中的 zzz

formatter.dateFormat = "dd/MM/yy hh:mm:ss a 'UTC'"

您需要将 UTC 之类的字符串文字放在单引号中,这样它们就不会被解释为格式字符。

请注意,如果您将日期格式设置为 UTC 时区,以上 只有 才能正常工作。如果您将其设置为其他时区,则输出字符串仍将以 UTC 结尾,这将是错误的。