【发布时间】:2012-11-21 03:58:36
【问题描述】:
在我的本地数据库中,我保存了一个 NSTimeInterval 值列表。 我必须找出并获取给定月份中可用的所有记录。唯一的问题是获取给定月份最后一天的记录似乎不可用。
假设给定月份是 12 月,所以我必须获取从 12 月 1 日到 12 月 31 日(直到晚上 11:59)的所有记录
我正在使用以下实现:
[self.dateFormatter setDateFormat:@"dd-MM-yyyy"];
NSDate *startDate = [self.dateFormatter dateFromString:@"1-12-2012"];
NSDate *endDate = [self.dateFormatter dateFromString:@"31-12-2012"];
NSTimeInterval startDateTimeInterval = [startDate timeIntervalSince1970];
NSTimeInterval endDateTimeInterval = [endDate timeIntervalSince1970];
[fetchRequest setPredicate:[NSPredicate predicateWithFormat:@"(mdate >= %f) AND (mdate <= %f)",startDateTimeInterval,endDateTimeInterval]];
我注意到endDateTimeInterval double 值与 31 日(上午 9 点)在数据库中保存的值相比要少得多。但是怎么可能,我希望我的 endDateTime 应该是到 12 月 31 日晚上 11:59。
请提供您对此问题的意见。
【问题讨论】:
-
我认为您未能提供时间会导致日期在一天的开始。如果你登录
(endDateTimeInterval - startDateTimeInterval)/(60.0*60.0*24.0)会发生什么? -
日志:30...应该是31吧?
-
但是为什么它来了 30。不是计算第一天和最后一天时间间隔的正确方法吗?
标签: iphone objective-c nsdate nsdateformatter nstimeinterval