我试着做一些简单的7天的历史绘图。考虑到当前的NSDate.date,我希望得到与7天前的一天开始相对应的NSDate。所以基本上是在今天早上0.00之前7天。
我尝试了以下几点:
// 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)。正确的方法是什么?
发布于 2015-02-23 21:27:29
要确定一个新的日期,你不仅要知道一天,还要知道一个月和一年。所以你应该添加NSYearCalendarUnit \ NSMonthCalendarUnit。此外,还应该设置NSDateComponents实例的日历和可能的时区属性:
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);https://stackoverflow.com/questions/28682634
复制相似问题