How can I check to see if a date is inherently TOMORROW?
I don't want to add hours or anything to a date like today, because if today is already
NSDateComponents you can extract day/month/year components from the date representing today, ignoring the hour/minutes/seconds components, add one day, and rebuild a date corresponding to tomorrow.
So imagine you want to add exactly one day to the current date (including keeping hours/minutes/seconds information the same as the "now" date), you could add a timeInterval of 24*60*60 seconds to "now" using
dateWithTimeIntervalSinceNow, but it is better (and DST-proof etc) to do it this way using
NSDateComponents* deltaComps = [[[NSDateComponents alloc] init] autorelease]; [deltaComps setDay:1]; NSDate* tomorrow = [[NSCalendar currentCalendar] dateByAddingComponents:deltaComps toDate:[NSDate date] options:0];
But if you want to generate the date corresponding to tomorrow at midnight, you could instead just retrieve the month/day/year components of the date representing now, without hours/min/secs part, and add 1 day, then rebuild a date:
// Decompose the date corresponding to "now" into Year+Month+Day components NSUInteger units = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay; 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];