【发布时间】:2017-07-06 23:34:16
【问题描述】:
将值存储到核心数据时,日期存储为时间戳,但年份不正确。如何将正确的日期时间存储到核心存储中?
采取的步骤
使用 Xcode 和 Swift 我创建了一个 iPhone 项目并添加了一个具有以下属性的实体:
Attribute Type
-------------------
name String
date Date
我正在使用核心数据来保存数据条目。例如:
myEntity = MyEntity(context: self.viewContext)
myEntity.name = nameString
myEntity.date = Date() as NSDate
self.appDelegate.saveContext()
这会在手机上的 sqlite 数据库中创建记录。在手机上打开Sqlite数据库,可以看到创建的记录如下:
Z_PK Z_NAME Z_DATE
1 George 521035200
使用以下命令转换日期值:
SELECT datetime(521035200, 'unixepoch');
OUTPUTS: 1986-07-06 12:00:00
日期/月份是正确的,但年份应该是 2017 年。
SQLite 中时间戳的正确格式是什么?
是否可以使用 Xcode 实体而不是时间戳来存储日期?
【问题讨论】:
-
CoreData 存储不同纪元的日期。这不是 1970 年 1 月 1 日的标准 Unix 时代。
-
是的,它似乎以不同的偏移量存储它们 - 当使用实体将值转换回来时,日期是正确的。
-
查看
Date(NSDate) 的文档以了解所用纪元的详细信息。 -
NSDate 参考日期是 2001 年 1 月 1 日 00:00:00 UTC。这是从 OS X 发布中得出的。
标签: ios swift sqlite core-data