如何获得过去一个月的所有日期

时间:2016-05-19 07:04:55

标签: objective-c

我希望得到从昨天到一个月的所有日期.. 像今天是5月19日,所以我需要所有的日期从5月18日到4月18日。 请帮忙。

2 个答案:

答案 0 :(得分:2)

您可以使用此代码。它可以使用。

NSDate *currentDate = [NSDate date];
NSLog(@"Current Date = %@", currentDate);

NSDateComponents *dateComponents = [NSDateComponents new];
dateComponents.month = -1;

NSDate *currentDatePlus1Month = [[NSCalendar currentCalendar] dateByAddingComponents:dateComponents toDate:currentDate options:0];

NSLog(@"Date = %@", currentDatePlus1Month );

NSCalendar *gregorianCalendar = [[NSCalendar alloc] initWithCalendarIdentifier: NSGregorianCalendar];
NSDateComponents *days = [[NSDateComponents alloc] init];
NSMutableArray* arr =[[NSMutableArray alloc]init];
NSInteger dayCount = 0;
while ( TRUE ) {
    [days setDay: ++dayCount];
    NSDate *date = [gregorianCalendar dateByAddingComponents: days toDate: currentDatePlus1Month options: 0];
    if ( [date compare: currentDate] == NSOrderedAscending ){
        [arr addObject:date];

    }
    if([[arr lastObject] isEqual:[currentDate dateByAddingTimeInterval:-60*60*24*1]])
    {
        NSLog(@"%lu",(unsigned long)arr.count);
        break;

    }
    // Do something with date like add it to an array, etc.
}

如果您发现所有日期都可以删除,则可以计算所有日期。

答案 1 :(得分:0)

为实现这一目标,我认为你应该有Array持有所有这些日期。我将在这里写出关于逻辑的伪代码。

INIT dateArray
NSDate pastDate = (today).yesterday
NSDate lastMonth = pastDate.lastMonth()
WHILE pastDate > lastMonth // pastDate is after lastMonth
    dateArray.add(pastDate)
    pastDate = pastDate.yesterday
END WHILE

关于如何将这个伪代码转换为真实代码是另一个故事(这将是相当长的)。希望这有帮助。

PS:如果你喜欢Objective-C解决方案,请发表评论。我会花时间为你写这篇文章;)