У меня есть странная ситуация, но здесь идет. Я пытаюсь сказать, если одно время между двумя другими. Я получил эту работу. Проблема в том, что второй раз будет на следующий день. Так, например, в первый раз будет 8 вечера, а второй раз будет 8 утра. И проблема в том, что когда я сравниваю два раза, компьютер думает, что 8 утра до 8 вечера. Так что это мой главный вопрос. Как я делаю это так, чтобы второй день был на следующий день после первого или завтра в некотором смысле. как если бы сегодня было первое, первый раз был бы 8 вечера первым, но второй раз был бы 8 утра вторым.Добавление 1 дня к моменту
Редактировать
Мой код до сих пор
NSDate *notificationDate =
[NSDate dateWithTimeInterval:data.postureInterval sinceDate:[NSDate date]];
if([notificationDate compare:data.sleepModeBegin] == NSOrderedDescending &&
[notificationDate compare:data.sleepModeEnd] == NSOrderedAscending)
{
NSLog(@"IT works");
}
уведомление произойдет = 8:30 вечера
data.sleepModeBegin = 8 вечера
data.sleepModeEnd = 8 am
Я хочу его так, что он записывает это работает, а потому, что второй из них 8 часов утра, он думает, что его утро, когда я хочу синицы быть tomrrow утра
Редактировать
Моего код после Martins ответа
NSCalendar *cal = [NSCalendar currentCalendar];
NSDateComponents *dateComponents = [[NSDateComponents alloc] init];
[dateComponents setDay:1];
NSDate *sleepEndTomorrow = [cal dateByAddingComponents:dateComponents toDate:data.sleepModeEnd options:0];
NSDate *notificationToHappen = [NSDate dateWithTimeInterval:data.postureInterval sinceDate:[NSDate date]];
NSLog(@"%@", notificationToHappen);
NSLog(@"%@", data.sleepModeBegin);
NSLog(@"%@", data.sleepModeEnd);
NSLog(@"%@", sleepEndTomorrow);
NSLog(@"%@", [NSDate date]);
if (([notificationToHappen compare:data.sleepModeBegin] == NSOrderedDescending) && ([notificationToHappen compare:sleepEndTomorrow] == NSOrderedAscending)) {
NSLog(@"HEY");
}
Первый DatePicker установлен в 3 вечера
второй DatePicker установлен в 8 утра
выход
2013-09-07 16:04:22.981 MyPosturePal[40145:a0b] 2013-09-07 20:15:22 +0000
2013-09-07 16:04:22.982 MyPosturePal[40145:a0b] 2013-09-06 19:00:41 +0000
2013-09-07 16:04:22.982 MyPosturePal[40145:a0b] 2013-09-06 12:00:41 +0000
2013-09-07 16:04:22.982 MyPosturePal[40145:a0b] 2013-09-07 12:00:41 +0000
2013-09-07 16:04:22.983 MyPosturePal[40145:a0b] 2013-09-07 20:04:22 +0000
Если вы используете 'объекты NSDate', это не должно быть проблемой. Затем вы можете использовать метод 'compare', чтобы сравнить их,' NSDateFormatter', чтобы отформатировать их в '@" ha ", чтобы получить' @ "8 утра" и т. Д. – Rob
Трудно ответить на ваш вопрос без дополнительной информации как ваше время хранится. - Вы должны использовать 'NSDate', который представляет« дату + время ». Для таких вычислений, как «добавление одного дня», вы должны прочитать [«Выполнение расчётов календаря»] (https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/DatesAndTimes/Articles/dtCalendricalCalculations.html#// apple_ref/doc/uid/TP40007836-SW1) в «Руководстве по программированию даты и времени». –
Я использую метод сравнения, загрузите мой код –