代码之家  ›  专栏  ›  技术社区  ›  lifemoveson

如何在NSDate中添加UTC

  •  0
  • lifemoveson  · 技术社区  · 7 年前

    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 回复  |  直到 7 年前
        1
  •  2
  •   Duncan C    7 年前

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

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

    你需要输入字符串文字,比如 UTC 在单引号中,因此它们不会被解释为格式字符。

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

        2
  •  0
  •   Lu_    7 年前

    在这里,我更改当前日期以保存相同的小时和日期,但仅更改时区。如果这对你有效,试试看

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