在 NSUserDefault 中保存日期会给出不正确的值

Posted

技术标签:

【中文标题】在 NSUserDefault 中保存日期会给出不正确的值【英文标题】:Saving Date in NSUserDefault gives incorrect values 【发布时间】:2016-10-24 08:40:34 【问题描述】:

当我打印存储在NSUserDefaults 中的值时,我得到以下输出。

    let prefs = NSUserDefaults.standardUserDefaults()
    prefs.setObject(NSDate(), forKey: "ST")

    print ("Hey \(prefs.objectForKey("ST")) ")

嘿可选(2016-10-24 08:29:20 +0000)

显示了一个文本Optional(,我想要只显示Date time

另外,给出的时间是不正确的。我该如何解决这个问题?

【问题讨论】:

它需要 UTC 时间,我认为这就是时间错误的原因 @Jecky 我怎样才能解决这个问题,我怎样才能摆脱围绕日期时间的文字Optional 处理可选项是 Swift 的基础。在这里解释:developer.apple.com/library/content/documentation/Swift/… 这只是 XCode 的默认行为,它显示 Optional 文本让您知道该变量是可选的。对于时间,print 命令以 UTC 时间显示时间,而不是您的本地时间。看:+0000 【参考方案1】:

也许您可以将日期保存为格式化字符串

让格式化程序:DateFormatter = DateFormatter() formatter.dateFormat = "yyyy.MM.dd HH:mm:ss ZZZ"

// Save Date...
let hoy: Date = Date()

let formato_hoy = formatter.string(from: hoy)
print(formato_hoy)


// Recover Date...
let future_format: String = "2016.10.24 09:54:22 +0200"

if let future = formatter.date(from: future_format) 

    print(future)   

掩码中的ZZZ值与时区有关。

【讨论】:

以上是关于在 NSUserDefault 中保存日期会给出不正确的值的主要内容,如果未能解决你的问题,请参考以下文章

Xcode 中的 NSUserDefault

NSUserDefault的使用

我可以根据另一个 NSUserDefault 值保存 NSUserDefault 值吗?

应用程序会丢失无线安装的 NSUserDefault 数据吗? [复制]

NSUserDefault 有时不会保存自己

如何在 NSUserDefault 中保存我的数据类型?