我有点奇怪的情况,但是这里有。我想告诉一个时间是否介于两个人之间。我有那个工作。问题是,第二次将在第二天。例如,第一次是晚上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
data.sleepModeBegin =晚上8点
data.sleepModeEnd =上午8点
我希望它能让它记录下来,但是因为第二个是早上8点,它认为是那天早上我希望山雀能够在早上看到
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");
}
第一个日期选择器设置为下午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
答案 0 :(得分:2)
NSDate
表示绝对时间点(包括当天)。
“仅限时间”模式下的日期选择器返回
选定的时间和“当天”。
如果您想添加一天,请使用NSCalendar
和NSDateComponents
:
NSCalendar *cal = [NSCalendar currentCalendar];
NSDateComponents *dateComponents = [[NSDateComponents alloc] init];
[dateComponents setDay:1];
NSDate *sleepEndTomorrow = [cal dateByAddingComponents:dateComponents
toDate:sleepEndToday options:0];
答案 1 :(得分:-4)
您可以将时间转换为纪元秒数 - nsdate方法timeIntervalSince1970将是objective-c的答案。