2016-01-01 56 views
0

這裏我使用一些標籤來顯示日期。我有2箭頭按鈕前進後退低於此前dates.Like:在一週內更改日期並非日復一日

(button) < **27Dec 28Dec 29Dec 30Dec 31Dec 1Jan** >(Button) 

下面是該代碼:

- (void)viewDidLoad { 
    [super viewDidLoad]; 
firstdate = [[NSCalendar currentCalendar] dateByAddingUnit:NSCalendarUnitDay value:-5 toDate:[NSDate date] options:nil]; 

    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
    [dateFormat setDateFormat:@"MMMM,yyyy"]; 
    dateLabel.text = [dateFormat stringFromDate:[NSDate date]]; 
    dateLabel.text = [dateFormat stringFromDate: firstdate]; 

    [self dateChange]; 
} 
-(void)dateChange 
{ 
    NSArray *labelArray = @[flabel, slabel, tlabel, folabel, fivlabel,sixlabel]; 
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
    NSCalendar *calendar = [NSCalendar currentCalendar]; 
    dateFormatter.dateFormat = @"ddMMM"; 
    for (NSInteger i = 0; i < 6; ++i) { 
     NSDate *nextDate = [calendar dateByAddingUnit:NSCalendarUnitDay value:i toDate:firstdate options:nil]; 
     UILabel *label = (UILabel *)labelArray[i]; 
     label.text = [dateFormatter stringFromDate:nextDate]; 
     if (i==5) { 
      [email protected]"MMM,yyyy"; 
      dateLabel.text = [[dateFormatter stringFromDate:nextDate] capitalizedString]; 

      NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
      [dateFormat setDateFormat:@"yyyy-MM-dd"]; 

      if ([[dateFormat stringFromDate:nextDate] isEqualToString:[dateFormat stringFromDate:[NSDate date]]]) 
      { 
       leftBtn.enabled = false; 
       //It's the same day 
      } 
      else 
      { 
       leftBtn.enabled = true; 
      } 
     } 
    } 
} 
- (IBAction)calRight:(id)sender { 

    firstdate = [NSDate dateWithTimeInterval:86400 sinceDate:firstdate]; 
    [self dateChange]; 


} 

- (IBAction)calLeft:(id)sender { 
firstdate = [NSDate dateWithTimeInterval:-86400 sinceDate:firstdate]; 
    [self dateChange]; 
} 

上面的代碼會像如果我按後退按鈕它會通過去逐個更改日期:

 < **27Dec 28Dec 29Dec 30Dec 31Dec 1Jan** > 

現在,如果我按向左箭頭:

< **26Dec 27Dec 28Dec 29Dec 30Dec 31Dec** > 

,但我需要的,如果當我按下左箭頭或右箭頭應該由週週這樣的:

< **27Dec 28Dec 29Dec 30Dec 31Dec 1Jan** > 

現在,如果我按向左箭頭:

< **21Dec 22Dec 23Dec 24Dec 25Dec 26Dec** > 

現在,如果我按左箭頭其再次應是這樣的:

< **16Dec 16Dec 17Dec 18Dec 19Dec 20Dec** > 

請我應該需要改變,以獲得這樣的改變星期日期wise.Please幫我一下!

+0

我不知道你現在在做什麼,你想做的事情太多了「什麼時候離開,然後離開日期然後離開日期然後離開」。 *實際*做了什麼?首先想到的是將'NSCalendarUnitDay'更改爲'NSCalendarUnitMonth' – luk2302

+0

實際上看到我使用了'6個標籤'和'2按鈕'...那個'2button'就像左右箭頭來改變日期。現在它改變了一個一個的日期。但我需要在周明智的變化。請參閱我的帖子上面的示例 – user5735383

回答

0

如果您想要的按鈕來改變firstDate 7天,而不是一個,改變你的按鈕的方法:

- (IBAction)calRight:(id)sender { 
    NSCalendar *calendar = [NSCalendar currentCalendar]; 
    firstdate = [calendar dateByAddingUnit:NSCalendarUnitDay value:7 toDate:firstdate options:nil]; 
    [self dateChange]; 
} 

- (IBAction)calLeft:(id)sender { 
    NSCalendar *calendar = [NSCalendar currentCalendar]; 
    firstdate = [calendar dateByAddingUnit:NSCalendarUnitDay value:-7 toDate:firstdate options:nil]; 
    [self dateChange]; 
} 

注:使用當前代碼86400是壞的。切勿使用此類代碼進行日期數學計算。

+0

我得到錯誤的第一行'calander'錯誤=使用未聲明的標識符'calander' – user5735383

+0

糟糕 - 請參閱更新。 – rmaddy