我希望得到从昨天到一个月的所有日期.. 像今天是5月19日,所以我需要所有的日期从5月18日到4月18日。 请帮忙。
答案 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解决方案,请发表评论。我会花时间为你写这篇文章;)