ios简单的倒计时实现
/**
* 获取当天的年月日的字符串
* 这里测试用
* @return 格式为年-月-日 时分秒
*/
-(NSString*)getyyyymmdd{
NSDate *now = [NSDate date];
NSDateFormatter *formatDay = [[NSDateFormatter alloc] init];
NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"zh"];
[formatDaysetLocale:locale];
formatDay.dateFormat = @"yyyy-MM-dd HH:mm:ss";
NSString*dayStr = [formatDaystringFromDate:now];
returndayStr;
}
- (void)startaaaa {
NSDateFormatter *dateFormatter=[[NSDateFormatter alloc] init];
//注意时区
NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"zh"];
[dateFormattersetLocale:locale];
[dateFormattersetDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSDate*endDate = [dateFormatterdateFromString:[selfgetyyyymmdd]];
NSDate *endDate_tomorrow = [[NSDate alloc] initWithTimeIntervalSinceReferenceDate:([endDate timeIntervalSinceReferenceDate] + 30)]; //24*3600
NSDate*startDate = [NSDatedate];
NSTimeIntervaltimeInterval =[endDate_tomorrowtimeIntervalSinceDate:startDate];
if(_timer==nil) {
__blockinttimeout = timeInterval;//倒计时时间
if(timeout!=0) {
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
_timer=dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER,0,0,queue);
dispatch_source_set_timer(_timer,dispatch_walltime(NULL, 0),1.0*NSEC_PER_SEC, 0); //每秒执行
dispatch_source_set_event_handler(_timer, ^{
if(timeout<=0){//倒计时结束,关闭
dispatch_source_cancel(_timer);
_timer=nil;
dispatch_async(dispatch_get_main_queue(), ^{
self.dayLB.text=@"";
self.hoursLB.text=@"00";
self.fenLB.text=@"00";
self.miaoLB.text=@"00";
self.dayLB.hidden=YES;;
self.hoursLB.hidden=YES;;
self.fenLB.hidden=YES;;
self.miaoLB.hidden=YES;;
// self.imageIV.image = [UIImage imageNamed:@"vipTry_no"];
});
}else{
intdays = (int)(timeout/(3600*24));
if(days==0) {
//通知主线程刷新
dispatch_async(dispatch_get_main_queue(), ^{
//回调或者说是通知主线程刷新,
self.dayLB.text=@"00";
});
}
inthours = (int)((timeout-days*24*3600)/3600);
intminute = (int)(timeout-days*24*3600-hours*3600)/60;
intsecond = timeout-days*24*3600-hours*3600-minute*60;
dispatch_async(dispatch_get_main_queue(), ^{
self.imageIV.image= [UIImageimageNamed:@"vipTry_yes"];
if(days==0) {
self.dayLB.text=@"00";
}else{
self.dayLB.text= [NSStringstringWithFormat:@"0%d",days];
}
if(hours<10) {
self.hoursLB.text= [NSStringstringWithFormat:@"0%d",hours];
}else{
self.hoursLB.text= [NSStringstringWithFormat:@"%d",hours];
}
if(minute<10) {
self.fenLB.text= [NSStringstringWithFormat:@"0%d",minute];
}else{
self.fenLB.text= [NSStringstringWithFormat:@"%d",minute];
}
if(second<10) {
self.miaoLB.text= [NSStringstringWithFormat:@"0%d",second];
}else{
self.miaoLB.text= [NSStringstringWithFormat:@"%d",second];
}
});
timeout--;
}
});
dispatch_resume(_timer);
}
}
}