Предположим:
static const unsigned long seconds_per_day = 60 * 60 * 24;
Вы можете получить сейчас и сейчас + 24 часа с:
NSDate* today = [NSDate date]; // set for today
NSDate* tomorrow = [today addTimeInterval:seconds_per_day];
Чтобы получить полночь для данного дня, важно помнить, что NSDate*
является бесплатным по мосту с CFDateRef
, который предоставляет некоторые дополнительные API, которые вы хотите использовать. В частности, вы можете преобразовать NSDate
в CFAbsoluteTime
с помощью CFDateGetAbsoluteTime
:
CFAbsoluteTime abstime = CFDateGetAbsoluteTime(reinterpret_cast<CFDateRef>(myNSDate));
long long inttime = static_cast<long long>(abstime);
inttime = (inttime / seconds_per_day) * seconds_per_day; // clips the time to midnight
NSDate* myNSDateAtMidnight = reinterpret_cast<NSDate*>(CFDateCreate(NULL,
static_cast<CFAbsoluteTime>(inttime)));
... которую вы можете заключить в функцию для округления today
и tomorrow
до полуночи.