DISPLY当前周开始和结束日期
问题描述:
我想在UINavigationBar
显示当前星期,然后单击下一步或上一页按钮显示上一个星期或下星期DISPLY当前周开始和结束日期
例子:
July 22 - July 28 July 29 - Auguest 4
答
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
答
要获得一周的第一天,你可以做这样的事情:
- (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 :)
根据NSDateFormatter'的'文档中上述回答表明后现在看来,这将是你手工作业。 – holex 2012-07-25 11:15:18
这真的是NSCallendar的工作。 – 2012-07-25 11:21:59
那么下面的回答者有你的两个建议,所以欢呼团队合作! – pasawaya 2012-07-25 12:31:02