2012-07-25 63 views
2

我想在UINavigationBar显示当前星期,然后单击下一步或上一页按钮显示上一个星期或下星期DISPLY当前周开始和结束日期

例子:

 
July 22 - July 28 
July 29 - Auguest 4 
+0

根据NSDateFormatter'的'文档中上述回答表明后现在看来,这将是你手工作业。 – holex 2012-07-25 11:15:18

+0

这真的是NSCallendar的工作。 – 2012-07-25 11:21:59

+0

那么下面的回答者有你的两个建议,所以欢呼团队合作! – pasawaya 2012-07-25 12:31:02

回答

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]]; 

}

+0

此代码将会让您获得7天的差异,而不是从一周开始到周末 – DivineDesert 2012-07-25 12:26:44

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 :)