2010-11-10 97 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。不知道爲什麼,但出於某種原因,那裏的日期計算錯誤!