你好
我在设置firstWeekDay时遇到问题,这是我的工作:

NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
comp = [gregorian components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSWeekCalendarUnit | NSWeekdayCalendarUnit) fromDate:targetDate];
[comp setWeekday:2];

NSDate *firstWeekDay = [gregorian dateFromComponents:comp];

如果2011年1月1日星期六是targetDate,则我日历中的firstWeekDay似乎是2011年12月26日星期一,但实际上应该是2010年12月26日星期一。我该怎么做呢?

最佳答案

要解决此问题,请在NSDateComponents中添加 NSYearForWeekOfYearCalendarUnit

前任:

NSCalendar* calendar = [NSCalendar currentCalendar];
NSDateComponents* comps = [calendar components:NSYearForWeekOfYearCalendarUnit |NSYearCalendarUnit|NSMonthCalendarUnit|NSWeekCalendarUnit|NSWeekdayCalendarUnit fromDate:curDate];

[comps setWeekday:2]; // 2: monday
firstDayOfTheWeek = [calendar dateFromComponents:comps];
[comps setWeekday:7]; // 7: saturday
lastDayOfTheWeek = [calendar dateFromComponents:comps];

关于objective-c - 使用NSDateComponents一周一周的第一天: changing year,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5349226/

10-11 22:02