【发布时间】:2014-04-18 10:08:49
【问题描述】:
我有一个通过传递任何特定日期返回工作日的函数,在我的应用程序中,星期一将是一周的开始日,它工作正常,除非将当前日期设置为星期日,在这种情况下函数将在下个工作日返回,
+(NSMutableArray*) getWeekDatesList :(NSDate*) date {
@autoreleasepool {
NSDate *startingDateOfWeek = [self getWeekStartDateWithDate:date];
return [self getWeekDatesListWithStartDate:startingDateOfWeek];
}
},
获取星期开始日期的函数是,
+(NSDate*) getWeekStartDateWithDate:(NSDate*) date{
@autoreleasepool {
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
[gregorian setLocale:[NSLocale currentLocale]];
[gregorian setFirstWeekday:2]; // 2 monday
[gregorian setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]];
NSDateComponents *components = [gregorian components:NSWeekdayCalendarUnit | NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSWeekOfYearCalendarUnit |NSWeekCalendarUnit fromDate:date];
int value =([components day]-([components weekday]-2));
[components setDay:value];
[components setHour:0];
[components setMinute:0];
[components setSecond:0];
NSDate *beginningOfWeek = [gregorian dateFromComponents:components];
return beginningOfWeek;
}
}
例子:
今天设置为 2014 年 4 月 20 日星期日,周开始日期为 2014 年 4 月 21 日,但预计周开始日期为 2014 年 4 月 13 日 >
即使当前日期设置为星期日,我怎样才能使其正常工作?
谢谢
【问题讨论】:
标签: ios nsdate nscalendar