显示当前周的开始和结束日期

时间:2012-07-25 11:10:27

标签: iphone objective-c

我想在UINavigationBar中显示当前周,然后点击下一个或上一个按钮以显示上周或下周

示例:

July 22 - July 28
July 29 - Auguest 4

2 个答案:

答案 0 :(得分:1)

要获得本周的第一个日期,您可以执行以下操作:

- (NSDate *)firstDayOfWeekFromDate:(NSDate *)date {
    CFCalendarRef currentCalendar = CFCalendarCopyCurrent();
    NSDateComponents *components = [CURRENT_CALENDAR components:DATE_COMPONENTS  fromDate:date];
    [components setDay:([components day] - ([components weekday] - CFCalendarGetFirstWeekday(currentCalendar)))];
    //[components setDay:(CFCalendarGetFirstWeekday(currentCalendar))];
    [components setHour:0];
    [components setMinute:0];
    [components setSecond:0];
    CFRelease(currentCalendar);
    return [CURRENT_CALENDAR dateFromComponents:components];
}

在获得当天的第一周后,您可以按照@vikas的上述答案建议计算天数  :)

答案 1 :(得分:0)

 NSDate * selectedDate = [NSDate date];


-(IBAction)Week_CalendarActionEvents:(id)sender{

NSCalendar *gregorian = [[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease];
NSDateComponents *offsetComponents = [[[NSDateComponents alloc] init] autorelease];
NSDate *nextDate;

if(sender==Week_prevBarBtn)  // Previous button events 
    [offsetComponents setDay:-7];
else if(sender==Week_nextBarBtn) // next button events 
    [offsetComponents setDay:7];

nextDate = [gregorian dateByAddingComponents:offsetComponents toDate:selectedDate options:0];

selectedDate = nextDate;
[selectedDate retain];

NSDateComponents *components = [gregorian components:NSWeekCalendarUnit fromDate:selectedDate];
NSInteger week = [components week];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"MMMM YYYY"];
NSString *stringFromDate = [formatter stringFromDate:selectedDate];
[formatter release];
[Week_weekBarBtn setTitle:[NSString stringWithFormat:@"%@,Week %d",stringFromDate,week]];

}

相关问题