在 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 中保存日期会给出不正确的值的主要内容,如果未能解决你的问题,请参考以下文章
我可以根据另一个 NSUserDefault 值保存 NSUserDefault 值吗?