我需要根据日期选择器中选择的时间来启动计时器。
现在,如果所选时间大于我当前时间,则NSTimeInterval
返回正值并且计时器正确启动。
我的问题是当我选择小于当前时间的时间时,NSTimeInterval
会返回负值。
所以我现在所做的是: - 添加秒数,以便第二天被24 * 60 * 60点燃。
秒值正确,因为当我通过将时间更改为日期来测试时,它会返回具有所选时间的下一个日期。
我在设置我的计时器时使用这些秒值。
这是我的代码:
NSTimeInterval value=[[self.pickerView date] timeIntervalSinceDate:[NSDate date]];
value=value+24*60*60;
NSLog(@"value =%f",value);
NSDate *d1 = [NSDate dateWithTimeIntervalSinceNow:value];
NSLog(@"%@",d1);
NSDateFormatter *format=[[NSDateFormatter alloc]init];
[format setDateFormat:@"dd/MM/yyyy hh:mm:ss a"];
NSString *str=[format stringFromDate:d1];
NSLog(@"str=%@",str);
[format release];
NSTimer *t = [[NSTimer alloc] initWithFireDate: d1
interval: 1
target: app
selector:@selector(fireWakeUpTimerMethod:)
userInfo:dict repeats:NO];
// app.WakeUPTimer=t;
NSRunLoop *runner = [NSRunLoop currentRunLoop];
[runner addTimer:t forMode: NSRunLoopCommonModes];
[t release];
但计时器没有被解雇。
我测试了这样: - 假设我的设备当前时间是6月15日上午11:00然后我在选择器视图中选择上午10:00时间,因为上午10:00小于上午11:00然后时间interval返回负值所以在这种情况下我做value = value +(24 * 60 * 60);然后用这个值设置我的计时器。然后我打开设置应用程序并将我的设备日期和时间更改为6月16日上午9:58并关闭设置应用程序并打开我的应用程序。但该方法在上午10:00没有启动。请告诉我们这是否是测试这种情况的正确方法。或者我在测试中犯了一些错误而不是编码。
请帮助我,因为我被困在这里。
提前致谢!
答案 0 :(得分:0)
我假设你正确值:
value=value+(24*60*60);
同时检查 NSTimer的目标及其选择器