首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >昨天的NSDate时间间隔

问昨天的NSDate时间间隔
EN

Stack Overflow用户
提问于 2013-07-12 23:19:28
回答 1查看 326关注 0票数 0

我需要根据昨天添加的值来过滤搜索结果。我昨天已经看了很多关于查找的文章:

代码语言:javascript
复制
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分。”

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-12 23:39:54

从今天的某个日期开始,例如"now":

代码语言:javascript
复制
NSCalendar *cal = [NSCalendar currentCalendar];
NSDate *now = [NSDate date];

减去一天得到昨天的一些日期:

代码语言:javascript
复制
NSDateComponents *minusOneDay = [[NSDateComponents alloc] init];
[oneDay setDay:-1];
NSDate *nowMinusOneDay = [cal dateByAddingComponents:minusOneDay toDate:now options:0];

计算包含昨天日期的“日日历单位”的开始日期和结束日期:

代码语言:javascript
复制
NSDate *startOfYesterday;
NSTimeInterval lengthOfYesterday;
[cal rangeOfUnit:NSDayCalendarUnit startDate:&startOfYesterday interval:&lengthOfYesterday forDate:nowMinusOneDay];
NSDate *endOfYesterday = [startOfYesterday dateByAddingTimeInterval:lengthOfYesterday];

即使在今天和昨天之间发生了夏令时转换,这也应该是有效的。

一般来说,人们应该避免使用明确的时间间隔,比如"24小时“,因为不是每天都有这个长度。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17618337

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档