【问题标题】:disply the current week start and end date显示当前周的开始和结束日期
【发布时间】:2012-07-23 19:19:36
【问题描述】:

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

例子:

7 月 22 日 - 7 月 28 日 7 月 29 日 - 8 月 4 日

【问题讨论】:

  • 根据NSDateFormatter的文档看来这对你来说是一项手工工作。
  • 这确实是 NSCallendar 的工作。
  • 嗯,下面的回答者有你的两个建议,所以为团队合作万岁!

标签: iphone objective-c


【解决方案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 上述答案中的建议计算天数 :)

【讨论】:

    【解决方案2】:
     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]];
    

    }

    【讨论】:

    • 此代码将为您带来 7 天的差异,而不是从一周开始到一周结束
    猜你喜欢
    • 2012-07-25
    • 1970-01-01
    • 1970-01-01
    • 2020-03-18
    • 1970-01-01
    • 2014-05-18
    • 2014-03-02
    • 1970-01-01
    相关资源
    最近更新 更多