首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSDate获取前一周、前一个月的问题

问NSDate获取前一周、前一个月的问题
EN

Stack Overflow用户
提问于 2013-03-25 17:33:21
回答 2查看 10.1K关注 0票数 10

我需要从当前日期获取前一周和前一个月。

所以我找到了可以重新计算当前日期添加间隔的解决方案

代码语言:javascript
复制
- dateByAddingTimeInterval

这是它的参数:

[[NSDate date] dateByAddingTimeInterval: -604800.0] (用于获取前一周)

[[NSDate date] dateByAddingTimeInterval: -2629743.83] (用于获取上个月)

因为我认为对于获取周,这个方法工作得很好,没有任何问题,因为每周有七天,间隔不变。但是对于月份,我们有一个问题,因为每个月有不同的天数。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-25 17:41:28

使用NSDateComponents,它将变得简单而准确

代码语言:javascript
复制
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *comps = [NSDateComponents new];
comps.month = -1;
comps.day   = -1;
NSDate *date = [calendar dateByAddingComponents:comps toDate:[NSDate date] options:0];
NSDateComponents *components = [calendar components:NSMonthCalendarUnit|NSDayCalendarUnit fromDate:date]; // Get necessary date components
NSLog(@"Previous month: %d",[components month]);
NSLog(@"Previous day  : %d",[components day]);
票数 35
EN

Stack Overflow用户

发布于 2013-03-25 17:41:11

对于更改日期,不要使用903484和-23484

这样做:

代码语言:javascript
复制
NSCalendar *gregorian=[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *components=[[NSDateComponents alloc] init];

components.month=1;//next month
components.month=-1;//previous month
//similarly +1 and -1 will give you week and month day etc
components.week=1;
components.day=1;

NSDate *myMonth=[gregorian dateByAddingComponents:components toDate:today options:0];
NSDateComponents *components = [calendar components:NSMonthCalendarUnit|NSDayCalendarUnit fromDate:date]; 
NSInteger yourRequiredValue=[components day]; //day, month, week etc
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15611568

复制
相关文章

相似问题

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