在iOS中添加一天到当前date
我看到这个post: iOS和发现明天 。
提供的代码是:
units = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit; NSDateComponents* comps = [[NSCalendar currentCalendar] components:units fromDate:[NSDate date]]; // Add one day comps.day = comps.day+1; // no worries: even if it is the end of the month it will wrap to the next month, see doc // Recompose a new date, without any time information (so this will be at midnight) NSDate* tomorrowMidnight = [[NSCalendar currentCalendar] dateFromComponents:comps];
问题:我需要在当前date添加一天,例如,2013年6月21日至2013年5月21日之间的差额为1个月,而不是0个月。
我正在使用的代码:
NSDate *selectedDate = [picker2 date]; unsigned int unitFlags = NSHourCalendarUnit | NSMinuteCalendarUnit | NSDayCalendarUnit | NSMonthCalendarUnit; NSDateComponents *conversionInfo = [currCalendar components:unitFlags fromDate:selectedDate toDate:[NSDate date] options:0]; DLog(@"%i",conversionInfo.month); DLog(@"%i",conversionInfo.day); conversionInfo.day +=1; DLog(@"%i",conversionInfo.day); DLog(@"%i",conversionInfo.month); int months = [conversionInfo month];
但是,当我试图找出2013年6月21日和2013年5月21日之间的差异 – >仍然返回我0个月,而不是1个月。
需要一些帮助。
形成date组件,其中包含要添加到原始date的天数。 从当前的日历表格中将该组件添加到您的原始date。
NSDateComponents *dateComponents = [NSDateComponents new]; dateComponents.day = 1; NSDate *newDate = [[NSCalendar currentCalendar]dateByAddingComponents:dateComponents toDate: selectedDate options:0];
这是我使用的方法:
+ (NSDate *)addDays:(NSInteger)days toDate:(NSDate *)originalDate { NSDateComponents *components= [[NSDateComponents alloc] init]; [components setDay:days]; NSCalendar *calendar = [NSCalendar currentCalendar]; return [calendar dateByAddingComponents:components toDate:originalDate options:0]; }
有了它,您可以添加任意数量的天数。 它也适用于负数,所以你可以减去几天。
简单而直接的解决scheme:
NSDate *currentDate = [NSDate date]; NSDate *nextDate = [currentDate dateByAddingTimeInterval:(24*3600)];
这对我来说工作得很好。
对于swift googlers:
NSCalendar.currentCalendar().dateByAddingUnit(NSCalendarUnit.CalendarUnitDay, value: 1, toDate: date, options: nil)!
首先,您正在将date而不是月份分配给NSDateComponent。 执行以下代码,findinDate和newDate之间的区别
NSCalendar *calendar = [NSCalendar currentCalendar]; NSDateComponents *components = [calendar components:NSCalendarUnitMonth fromDate:inDate];
NSInteger monthFlag = 1; components.month = minuteFlag;
// Retrieve date with increased days count NSDate *newDate = [[NSCalendar currentCalendar] dateByAddingComponents:components toDate:monthFlag options:0];
要添加任何数量的任何组件到date,例如:2天或2个月,1年,执行以下操作:
Calendar.current.date(byAdding: DateComponents(month: -1), to: date)! //this create date with previous month for date.
你可以用任何东西初始化DateComponents
:
public init(calendar: Calendar? = default, timeZone: TimeZone? = default, era: Int? = default, year: Int? = default, month: Int? = default, day: Int? = default, hour: Int? = default, minute: Int? = default, second: Int? = default, nanosecond: Int? = default, weekday: Int? = default, weekdayOrdinal: Int? = default, quarter: Int? = default, weekOfMonth: Int? = default, weekOfYear: Int? = default, yearForWeekOfYear: Int? = default)