iPhone:查找当前日期到未来60天

iPhone:查找当前日期到未来60天,iphone,nsdate,Iphone,Nsdate,我使用以下代码来查找从当前日期+时间到未来30天的时间。它很好用。但是,我想现在的结束日期应该是60天,而不是30天。如何更改下面的代码,使其最多可使用60天?我尝试将结束日期更改为[currentDateComponents month]+1,但不起作用。需要帮忙吗 NSDate *date = [NSDate date]; NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCa

我使用以下代码来查找从当前日期+时间到未来30天的时间。它很好用。但是,我想现在的结束日期应该是60天,而不是30天。如何更改下面的代码,使其最多可使用60天?我尝试将结束日期更改为[currentDateComponents month]+1,但不起作用。需要帮忙吗

NSDate *date = [NSDate date];

NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 
NSDateComponents *currentDateComponents = [gregorian components:( NSWeekdayCalendarUnit | NSYearCalendarUnit | NSMonthCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSWeekCalendarUnit) fromDate:date];
NSLog(@"- current components year = %d , month = %d , week = % d, weekday = %d", [currentDateComponents year], [currentDateComponents month], [currentDateComponents week], [currentDateComponents weekday]);

NSArray* calendars = [[CalCalendarStore defaultCalendarStore] calendars];
NSLog(@"calendars.count: %ld", [calendars count]);

debug(@"LogMsg:%@ Date:%@", @"Start looking for new events for pushing iCal to OfferSlot", [NSDate date]);

// 30 days any new or modified calendar (iCal) events will be pushed here to OfferSlot
NSInteger year = [[NSCalendarDate date]yearOfCommonEra];
NSDate *startdate = [NSCalendarDate dateWithYear:year month:[currentDateComponents month] day:1 hour:0 minute:0 second:0 timeZone:nil];
NSDate *enddate = [NSCalendarDate dateWithYear:year month:[currentDateComponents month] day:31 hour:23 minute:59 second:59 timeZone:nil];

您的代码并不总是像您在文本中描述的那样。它创建两个日期,一个在本月初,一个在月末(如果本月有31天,如果少于31天,则结束日期将在下个月)。如果您在每月1日运行代码,它将创建一个NSDate,该日期为未来30天,但仅在每月1日


如果您确实希望获得60天后的NSDate,请使用以下代码:

NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *sixtyDaysOffset = [[NSDateComponents alloc] init];
sixtyDaysOffset.day = 60;
NSDate *sixtyDaysFromNow = [calendar dateByAddingComponents:sixtyDaysOffset toDate:[NSDate date] options:0];

您的代码并不总是像您在文本中描述的那样。它创建两个日期,一个在本月初,一个在月末(如果本月有31天,如果少于31天,则结束日期将在下个月)。如果您在每月1日运行代码,它将创建一个NSDate,该日期为未来30天,但仅在每月1日


如果您确实希望获得60天后的NSDate,请使用以下代码:

NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *sixtyDaysOffset = [[NSDateComponents alloc] init];
sixtyDaysOffset.day = 60;
NSDate *sixtyDaysFromNow = [calendar dateByAddingComponents:sixtyDaysOffset toDate:[NSDate date] options:0];