2010-11-10 63 views
2

我创建一个每周日历视图,其中的一部分是计算显示的星期的第一天。我也希望保存的日期有第一秒的时间,所以我试图确保日期的hh:mm:ss都是00:00:00。NSDateComponents给出奇数结果

我有以下代码,在大多数情况下工作正常,但在日期大约在一年的开始或结束时给出看似随机的结果。

unsigned unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSWeekdayCalendarUnit | NSWeekCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit; 

NSDateComponents *comps = [gregorian components:unitFlags fromDate:self.selectedDate]; 
NSDateComponents *addcomps = [[NSDateComponents alloc] init]; 
[addcomps setDay:1-[comps weekday]]; 

NSDate *fixedDate = [appDelegate.gregorian dateByAddingComponents:addcomps toDate:self.selectedDate options:0]; 
////FIXED DATE IS NOW FIRST DAY OF DISPLAYED WEEK 

comps = [appDelegate.gregorian components:unitFlags fromDate:fixedDate]; ///fixedDate = 2010-01-03 02:51:25 -0600 
[comps setHour:0]; 
[comps setMinute:0]; 
[comps setSecond:0]; 
self.savedBeginningDate = [appDelegate.gregorian dateFromComponents:comps]; ///self.savedBeginningDate = 2011-01-09 00:00:00 -0600 

不知何故设置HH:MM:SS为00:00:00,从2010年1月3日,更改日期1月11日,2009年

我已经添加了dateFromComponents的结果评论在这些线上。这种奇怪的行为似乎只发生在年份周围,并且在我见过的其他任何一周都不会发生。

感谢您的帮助!

回答

1

我已经想通了:我必须从unitFlags中取出NSWeekCalendarUnit。不知道为什么,但出于某种原因,那里的日期计算错误!