当前位置:  开发笔记 > 后端 > 正文

iPhone SDK核心数据系统如何将日期类型存储到sqlite?

如何解决《iPhoneSDK核心数据系统如何将日期类型存储到sqlite?》经验,为你挑选了3个好方法。

我使用核心数据来做到这一点:

NSManagedObjectContext *m = [self managedObjectContext];
Foo *f = (Foo *)[NSEntityDescription insertNewObjectForEntityForName:@"Foo" 
                                                        inManagedObjectContext:m];
f.created_at = [NSDate date];
[m insertObject:f];

NSError *error;
[m save:&error];

其中created_at字段在xcdatamodel中定义为"Date"类型.

当我从它创建的sqlite数据库导出sql时,created_at被定义为类型"timestamp",值看起来像:

290902422.72624

前九位数.然后是一些分数.

这种格式是什么?这不是纪元时间,也不是julianday格式.

时代将是:

1269280338.81213

julianday将是:

2455278.236746875(通知前只有7位数字.不是像我一样的9位数字)

我怎么能把像290902422.72624这样的数字转换成纪元时间?谢谢!



1> Tim..:

首先,请注意,Core Data文档说您永远不应该触摸它自己生成的SQL或值 - 如果您对模型进行更改,可能会使模型失效,并且首先难以解析.

那就是说,你可能会看到的是相对于格林尼治标准时间2001年1月1日的日期.NSDate的文档指定单个基本方法timeIntervalSinceReferenceDate使用该时间作为其引用.反过来,Core Data使用NSDateAttributeType存储日期类型,日期类型被定义为NSDate对象.

通过计算器运行您的价值会产生:

290902422.72624 / 60 / 60 / 24 / 365.25 = 9.21814...

这是自该参考日期以来经过的年数.

如果你真的需要将该值解析回一个纪元时间,你可以使用initWithTimeIntervalSinceReferenceDate:你的SQLite存储数字的方法获得一个NSDate,然后调用timeIntervalSince1970以获取纪元秒(在NSTimeInterval结构中).



2> 小智..:

我遇到了一个相关的问题,试图在远程API中将Core Data存储日期与MySQL存储日期进行比较.我的解决方案是使用SQLite的日期函数来转换时间:

SELECT datetime('2001-01-01','+290902422.72624 second');

返回:

2010-03-21 22:13:42

SQLite假定日期是本地时间并将其转换为UTC/GMT.如果您希望它保持在本地时间,请使用本地时间修饰符:

SELECT datetime('2001-01-01','+296662599 second','localtime');

返回:

2010-03-21 17:13:42

这显示了我本地TZ的-0500偏移量.

在此基础上,您可以使用SQLite的格式为'%s'的strftime函数来获取时间:

SELECT strftime('%s',datetime('2001-01-01','+290902422.72624 second'));

返回:

1269209622

我希望这有帮助.



3> Andrew Marin..:

只需将978307200添加到核心数据中的数字,即可获得正常的时间戳

NSString *coreDataTimestamp =@"464615485.832736"; //string of timestamp in coredata
NSTimeInterval timestamp = [coreDataTimestamp doubleValue] + 978307200;

推荐阅读
落单鸟人
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有