NSDATECOMPORENTS给出奇怪的结果
-
30-09-2019 - |
题
我正在创建每周的日历视图,其中一部分是在显示一周的第一天。我还希望保存的日期拥有第一秒钟的时间,因此我试图确保日期的HH:MM:SS全部00:00:00。
我有以下代码,在大多数情况下可以正常运行,但是当日期左右或一年结束时,就会产生似乎随机的结果。
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日更改为2009年1月11日。
我已经将datefromComponents的结果添加为对这些行的评论。这种奇怪的行为似乎只有在一年左右时就会发生,并且我见过的任何其他一周都不会发生。
谢谢你的帮助!
解决方案
我已经弄清楚了:我不得不取出 NSWeekCalendarUnit
从单元格拉格。不知道为什么,但是出于某种原因,日期的计算错误!
不隶属于 StackOverflow