我有一种奇怪的情况,但这里有。我试图判断一个时间是否在另外两个之间。我得到了那个工作。问题是,第二次将在第二天。例如,第一次是晚上 8 点,第二次是早上 8 点。问题是当我比较两次时,计算机认为上午 8 点在晚上 8 点之前。所以这是我的主要问题。我怎么能做到第二天是第一天之后的一天,或者在某种意义上说是明天。就像今天是第一次,第一次是晚上 8 点,但第二次是早上 8 点。
编辑
到目前为止我的代码
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 pm
data.sleepModeBegin = 晚上 8 点
data.sleepModeEnd = 上午 8 点
我想要它以便它记录它的工作,但是因为第二个是早上 8 点,所以它认为它是那天早上,当我想让山雀明天早上
编辑
马丁斯回答后我的代码
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");
}
第一个日期选择器设置在下午 3 点
第二个日期选择器设置在上午 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