【发布时间】:2011-10-25 01:42:55
【问题描述】:
我看到了一些围绕这个主题的问题,但没有一个完全匹配。
我正在创建一个时间戳作为主键的一部分。时间戳使用 [NSDate date] 设置并存储在 SQLite 存储中。当我查看商店时,日期具有完整的精度(最多 7 位小数表示 100 纳秒精度)。
我在服务器上运行了一些服务,我需要将数据发送到该服务器并从中检索日期。发送过程对数据进行序列化,以便以所需的精度发送日期(在 SQL Server 中存储为 datetime2),我使用:
NSDateFormatter *dateFormat = [[NSDateFormatter alloc]init];
[dateFormat setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSSSSS'Z'"];
NSString *stringFromDate = [dateFormat stringFromDate:dateTime];
从服务器检索日期时反之亦然。
问题在于,出于某种原因,从商店中检索的日期仅为毫秒精度。因此,如果我在商店中有一个时间戳为 341196557.808558,则检索到 NSDate,然后使用上面的代码生成一个字符串,读取为“2011-10-24'T'08:48:17.8090000”。
这被发送到服务器,该服务器尽职地以毫秒精度存储它(因为这就是它所得到的全部)。然后当我检索日期时,对其进行反序列化并尝试对存储使用谓词提取,因为日期不相等,所以它不会返回记录。进行 比较是行不通的,因为它是主键...我需要 ==
我不介意在保存之前将时间戳降低到毫秒精度(如果我能弄清楚如何),但对我来说,原始日期可以存储和保存微秒精度但不保持相同,这似乎非常奇怪从商店中检索日期时的精度?
希望有任何想法,或者解决这个问题的宝石单线......
【问题讨论】:
标签: sqlite core-data nsdate precision