2015-02-23 49 views
-1

我想显示过去5天的日期。但它只显示上次日期(昨天)。我正在使用下面的代码来显示它。显示最近5天的日期在ios

.h文件中:

NSInteger getDist; 
NSString *lastdate; 
NSDateFormatter *dateFormatter; 
NSDate *sevenDaysAgo; 
NSDate *dateAfterDecrement; 
NSString *dateString; 
int i; 

viewDidLoad中:

NSDate *currDate = [NSDate date]; 
dateFormatter = [[NSDateFormatter alloc]init]; 
[dateFormatter setDateFormat:@"dd.MM.YY"]; 
dateString = [dateFormatter stringFromDate:currDate]; 
_currentDate.text=dateString; 

-(void)display 
{ 
    for(i=1;i<=5;i++) 
    { 
    lastdate = _currentDate.text; 
    [dateFormatter setDateFormat:@"dd.MM.YY"]; 
    sevenDaysAgo = [dateFormatter dateFromString:lastdate]; 
    dateAfterDecrement=[sevenDaysAgo initWithTimeIntervalSinceNow:- 
    (24*60*60)]; 
    } 
    _currentDate.text = [dateFormatter stringFromDate:dateAfterDecrement]; 

} 

请给我建议。

+0

假设'currentDate'是@property使用'self.currentDate',不'_currentDate'。使用'_currentDate'不是一个错误,但是使用'self.currentDate'是当前的最佳实践。它还允许在属性上设置断点并中断访问。它还允许将该属性在将来更改为返回计算值的方法。 – zaph 2015-02-23 12:14:27

+0

它仍然只显示昨天的日期。 – vijay 2015-02-23 12:18:38

+0

For循环将运行5次并显示最后一个循环值,即:i = 4的值。所以它每次只显示昨天的值,试图保存从每个循环获得的值...所以.._ currentDate.text显示最后一个循环值 – Vidhyanand 2015-02-23 12:24:33

回答

1

这里是如何显示当天的日期,那么最后4天的日期,天数递减当前日期到这种方式。

NSDateFormatter* formatter = [[NSDateFormatter alloc] init]; 
[formatter setDateFormat:@"MMM dd, yyyy"]; 
[formatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]]; 

int DAY_TO_SECONDS = -60*60*24; 
for (int n=0; n<5; n++) 
{ 
    NSDate* date = [[NSDate date] dateByAddingTimeInterval:DAY_TO_SECONDS*n]; 
    NSString* dateString = [formatter stringFromDate:date]; 

    NSLog(@"%@", dateString); 
} 

这将产生象输出:

2015-02-23 13:18:30.657 ClientInfo[1418:557691] Feb 23, 2015 
2015-02-23 13:18:30.658 ClientInfo[1418:557691] Feb 22, 2015 
2015-02-23 13:18:30.658 ClientInfo[1418:557691] Feb 21, 2015 
2015-02-23 13:18:30.658 ClientInfo[1418:557691] Feb 20, 2015 
2015-02-23 13:18:30.658 ClientInfo[1418:557691] Feb 19, 2015 
+0

我收到以下错误。没有已知的类选择器“现在”的方法。 – vijay 2015-02-23 12:39:11

+0

对不起,我自己加了这个。我已更改我的代码以使其[NSDate日期]。 – 2015-02-23 12:51:05

1

,你可以通过你想要得到

NSCalendar *calendar = [NSCalendar autoupdatingCurrentCalendar]; 
    NSDateComponents *datecomponents = [calendar components:NSYearCalendarUnit 
         | NSMonthCalendarUnit | NSDayCalendarUnit 
         fromDate:[NSDate date]]; 
      for (int i = 0; i < 5; ++i) { 
       NSDate *date = [calendar dateFromComponents:datecomponents]; 
       NSLog(@"%@",date); 
       --datecomponents.day; 
      }