如何获得上个月在iOS的第一天

我正在一个日历应用程序,它工作正常,当我导航到下个月,因为我能够得到本月的最后一天,从哪里我可以得到未来一个月的第一天。但是当我导航到以前一个月我不能得到上个月的第一天。有没有办法得到上个月的第一天。

以下工作适合我

NSCalendar *calendar = [NSCalendar currentCalendar]; NSDate *currentDate = [NSDate date]; NSDateComponents *components = [calendar components:(NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit) fromDate:currentDate]; components.month = components.month - 1; components.day = 1; NSDate *newDate = [calendar dateFromComponents:components]; 

如果您当前的月份是一月份,这也适用。 NSDateComponents将自动递减年份并将月份设置为十二月份。

  NSDateComponents *components = [[NSCalendar currentCalendar] components:NSCalendarUnitDay | NSCalendarUnitMonth | NSCalendarUnitYear fromDate:[NSDate date]]; components.day = 1; components.month = components.month - 1; NSDate *lastmonthDay1 = [[NSCalendar currentCalendar] dateFromComponents: components]; NSLog(@"First day of last month====: %@", [lastmonthDay1 descriptionWithLocale:[NSLocale currentLocale]]); 

你可以做下面的事情….

  NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; [gregorian setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]]; NSDateComponents *comp = [gregorian components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit) fromDate:[NSDate date]]; [comp setDay:1]; [comp setMonth:CurrentMonth];//previous month [comp setYear:currentYear]; NSDate *firstDayOfMonthDate = [gregorian dateFromComponents:comp]; NSCalendar *cal1=[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; NSDateComponents *comps1 = [cal1 components:NSWeekdayCalendarUnit fromDate:firstDayOfMonthDate]; // 1 for mon 8 for sun int startWithDay=[comps1 weekday]==1?8:[comps1 weekday]; //1 for monday // 2 for tuesday and so on.... 

让我知道它工作与否!

快乐的编码!