如何在ios中获取一周的开始日期和结束日期

时间:2013-06-12 11:12:59

标签: iphone ios nsdate nscalendar nsdatecomponents

请查看以下代码行:

NSCalendar *calendar = [NSCalendar currentCalendar];
NSInteger weekNumber =  [[calendar components: NSWeekCalendarUnit fromDate:date] week];

现在我们如何获得给定周数的第一天和最后一天(假设一周从星期一到星期日开始)。

如果可以获得所有日期的数组属于同一周数。

1 个答案:

答案 0 :(得分:1)

要获得一周的第一天,可以使用以下代码。

    NSDate *now = [NSDate date];

    NSCalendar *calendar = [NSCalendar currentCalendar];
    NSInteger weekNumber =  [[calendar components: NSWeekCalendarUnit fromDate:now] week];

    NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];

    NSDateComponents *comp = [gregorian components:NSYearCalendarUnit fromDate:now];
    [comp setWeek:weekNumber];  //Week number.
    [comp setWeekday:1]; //First day of the week. Change it to 7 to get the last date of the week

    NSDate *resultDate = [gregorian dateFromComponents:comp];

    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"MMM d, yyyy"];

    NSString *myDateString = [formatter stringFromDate:resultDate];
    NSLog(@"%@",myDateString);

在上面的代码中注释,将 setWeekday 方法的参数更改为7以获取一周的最后一天。

如果你有一周的第一天和最后一天,你可以获得以下链接中提到的所有日期。 Array for dates between two dates

注意:周一从周一开始,设置英国区域。

更改iPhone日历以将星期一显示为一周的第一天。  1.点击“设置”  2.点击“常规”  3.点击“国际”  4.点击“区域格式”  5.选择“联合王国”