[英]NSTimer does not fire in next date time
我需要根据日期选择器中选择的时间触发计时器。 现在,如果所选时间大于我的当前时间,则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,则时间间隔返回负数值,因此在这种情况下,我会执行value = value +(24 * 60 * 60); 并使用此值设置计时器。然后,我打开设置应用并将设备日期和时间更改为6月16日上午9:58,然后关闭设置应用并打开我的应用。但是该方法并未在上午10:00触发。告诉我们这是否是测试这种情况的正确方法。或者我在测试而不是编码时犯了一些错误。
我被困在这里,请帮助我。
提前致谢!
我认为您的价值正确:
value=value+(24*60*60);
还要检查NSTimer的目标及其选择器
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.