首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从7天前开始获取NSDate

从7天前开始获取NSDate
EN

Stack Overflow用户
提问于 2015-02-23 20:17:09
回答 1查看 377关注 0票数 0

我试着做一些简单的7天的历史绘图。考虑到当前的NSDate.date,我希望得到与7天前的一天开始相对应的NSDate。所以基本上是在今天早上0.00之前7天。

我尝试了以下几点:

代码语言:javascript
复制
// decompose the current date, do I need more component fields?
NSDateComponents *comps = [NSCalendar.currentCalendar components: NSDayCalendarUnit fromDate: NSDate.date]; 
NSLog(@"components: %@", comps);
// Back day up 7 days. Will this wrap appropriate across month/year boundaries?
comps.day -= 7;
NSDate *origin = comps.date;
NSLog(@"new date: %@", origin);

我所假设的是,只要指定NSDayCalendarUnit,其他事情都是默认的(比如开始一天,等等)。不幸的是,origin最终成为了(null)。正确的方法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-23 21:27:29

要确定一个新的日期,你不仅要知道一天,还要知道一个月和一年。所以你应该添加NSYearCalendarUnit \ NSMonthCalendarUnit。此外,还应该设置NSDateComponents实例的日历和可能的时区属性:

代码语言:javascript
复制
NSDateComponents *comps = [NSCalendar.currentCalendar components: NSYearCalendarUnit | NSMonthCalendarUnit |  NSDayCalendarUnit fromDate: NSDate.date];
comps.calendar = NSCalendar.currentCalendar;
comps.timeZone = [NSTimeZone timeZoneWithName:@"UTC"];
NSLog(@"components: %@", comps);
// Back day up 7 days. Will this wrap appropriate across month/year boundaries?
comps.day -= 7;
NSDate *origin = comps.date;
NSLog(@"new date: %@", origin);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28682634

复制
相关文章

相似问题

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