使用components / set Monday作为第一个工作日提取一周中的一周

时间:2015-02-04 16:06:00

标签: objective-c calendar nsdatecomponents

我正在开发一个应用程序,在这个应用程序中,我不得不计算一年中某一周的某一周。

我知道这听起来很简单。如果周日没有被评为下周,我会使用日期格式化程序,这会让我感到烦恼。

所以我决定使用日期组件。我修改了日历对象,因此第一个工作日是星期一:

+ (NSInteger) getNumberOfWeekOfYearFromDate:(NSDate *)entryDate{

    NSCalendar *calendar = [NSCalendar currentCalendar];
    [calendar setFirstWeekday: 2];

    NSDateComponents *components = [calendar components:NSWeekCalendarUnit | NSYearForWeekOfYearCalendarUnit | NSYearCalendarUnit fromDate:entryDate];
    NSInteger weekOfYear = [components weekOfYear];

    return weekOfYear;
}

不幸的是,返回值是大数字,如" 2147483647"。我究竟做错了什么?我在网上搜索时没有找到任何解决方案。

提前干杯和谢谢

1 个答案:

答案 0 :(得分:0)

试试这个:

+ (NSInteger) getNumberOfWeekOfYearFromDate:(NSDate *)entryDate{

    NSCalendar *calendar = [NSCalendar currentCalendar];
    [calendar setFirstWeekday: 2];

    NSDateComponents *components = [calendar components:
        NSCalendarUnitWeekOfYear | NSCalendarUnitYear fromDate:entryDate];

    NSInteger weekOfYear = [components weekOfYear];


    return weekOfYear;
}