Мне нужно получить дату первого дня недели с любой даты. Этот код работает нормально, но для некоторых дат я получаю очень странный результат. Дата первой недели года преобразуется в дату прошлой недели:
NSTimeInterval ti = 1420311299;
NSDate* date = [NSDate dateWithTimeIntervalSince1970:ti];
NSLog(@"%@", date); // OUTPUT: 2015-01-03 18:54:59 +0000
NSCalendar* calendar = [NSCalendar currentCalendar];
NSDateComponents *cmps = [calendar components:(kCFCalendarUnitWeekOfYear | kCFCalendarUnitYear) fromDate:date];
cmps.weekday = calendar.firstWeekday;
NSLog(@"%@", cmps); // OUTPUT: Calendar Year: 2015
// Week of Year: 1
// Weekday: 1
NSDate* newDate = [calendar dateFromComponents:cmps];
NSLog(@"%@", newDate); // OUTPUT: 2015-12-26 22:00:00 +0000