我需要根据昨天添加的值来过滤搜索结果。我昨天已经看了很多关于查找的文章:
NSCalendar *cal = [NSCalendar currentCalendar];
NSDateComponents *components = [cal components:( NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit ) fromDate:[[NSDate alloc] init]];
[components setHour:-24];
[components setMinute:0];
[components setSecond:0];
NSDate *yesterday = [cal dateByAddingComponents:components toDate:[NSDate date] options:0];
predicate = [NSPredicate predicateWithFormat:@"created_at >= %@", yesterday];但这发现了从这一时刻开始的24小时。我需要将昨天的时间过滤为12:01 as 12:00 12所以实际的24小时是在昨天。
我猜我需要这样做: 1.取当前日期2.找出从当前日期到当天凌晨12:01的时间3.然后从该日期减去24小时
我很有信心可以做到#3 (当然还有#1 ),但我不确定如何做#2。我可能想多了,但我似乎不知道怎么说:“好的,现在是上午8点03分,我需要去掉8小时零2分钟,这会让我在中午12点01分。”
发布于 2013-07-12 23:39:54
从今天的某个日期开始,例如"now":
NSCalendar *cal = [NSCalendar currentCalendar];
NSDate *now = [NSDate date];减去一天得到昨天的一些日期:
NSDateComponents *minusOneDay = [[NSDateComponents alloc] init];
[oneDay setDay:-1];
NSDate *nowMinusOneDay = [cal dateByAddingComponents:minusOneDay toDate:now options:0];计算包含昨天日期的“日日历单位”的开始日期和结束日期:
NSDate *startOfYesterday;
NSTimeInterval lengthOfYesterday;
[cal rangeOfUnit:NSDayCalendarUnit startDate:&startOfYesterday interval:&lengthOfYesterday forDate:nowMinusOneDay];
NSDate *endOfYesterday = [startOfYesterday dateByAddingTimeInterval:lengthOfYesterday];即使在今天和昨天之间发生了夏令时转换,这也应该是有效的。
一般来说,人们应该避免使用明确的时间间隔,比如"24小时“,因为不是每天都有这个长度。
https://stackoverflow.com/questions/17618337
复制相似问题