iOS实现秒杀活动倒计时
IOS关于大型网站抢购、距活动结束,剩余时间倒计时的实现代码,代码比较简单,大家根据需求适当的添加修改删除代码
1.定义4个Label来接收倒计时:
@property(weak,nonatomic)IBOutletUILabel*dayLabel; @property(weak,nonatomic)IBOutletUILabel*hourLabel; @property(weak,nonatomic)IBOutletUILabel*minuteLabel; @property(weak,nonatomic)IBOutletUILabel*secondLabel;
2.在实现文件中实现方法:
//时间戳转换为日期格式(毫秒的时间戳)
-(NSString*)timeWithTimeIntervalString:(NSString*)timeString
{
//格式化时间
NSDateFormatter*formatter=[[NSDateFormatteralloc]init];
formatter.timeZone=[NSTimeZonetimeZoneWithName:@"shanghai"];
[formattersetDateStyle:NSDateFormatterMediumStyle];
[formattersetTimeStyle:NSDateFormatterShortStyle];
[formattersetDateFormat:@"yyyy-MM-ddHH:mm:ss"];
//毫秒值转化为秒
NSDate*date=[NSDatedateWithTimeIntervalSince1970:[timeStringdoubleValue]/1000.0];
NSString*dateString=[formatterstringFromDate:date];
NSLog(@"时间===%@",dateString);
returndateString;
}
-(void)downSecondHandle:(NSString*)aTimeString{
NSDateFormatter*dateFormatter=[[NSDateFormatteralloc]init];
[dateFormattersetDateFormat:@"yyyy-MM-ddHH:mm:ss"];
NSDate*endDate=[dateFormatterdateFromString:[selftimeWithTimeIntervalString:aTimeString]];//结束时间
NSDate*endDate_tomorrow=[[NSDatealloc]initWithTimeIntervalSinceReferenceDate:([endDatetimeIntervalSinceReferenceDate])];
NSDate*startDate=[NSDatedate];
NSString*dateString=[dateFormatterstringFromDate:startDate];
NSLog(@"现在的时间===%@",dateString);
NSTimeIntervaltimeInterval=[endDate_tomorrowtimeIntervalSinceDate:startDate];
if(_timer==nil){
__blockinttimeout=timeInterval;//倒计时时间
if(timeout!=0){
dispatch_queue_tqueue=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.dayLabel.text=@"";
self.hourLabel.text=@"00";
self.minuteLabel.text=@"00";
self.secondLabel.text=@"00";
});
}else{
intdays=(int)(timeout/(3600*24));
if(days==0){
self.dayLabel.text=@"";
}
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(),^{
if(days==0){
self.dayLabel.text=@"0天";
}else{
self.dayLabel.text=[NSStringstringWithFormat:@"%d天",days];
}
if(hours<10){
self.hourLabel.text=[NSStringstringWithFormat:@"0%d",hours];
}else{
self.hourLabel.text=[NSStringstringWithFormat:@"%d",hours];
}
if(minute<10){
self.minuteLabel.text=[NSStringstringWithFormat:@"0%d",minute];
}else{
self.minuteLabel.text=[NSStringstringWithFormat:@"%d",minute];
}
if(second<10){
self.secondLabel.text=[NSStringstringWithFormat:@"0%d",second];
}else{
self.secondLabel.text=[NSStringstringWithFormat:@"%d",second];
}
});
timeout--;
}
});
dispatch_resume(_timer);
}
}
}
3.在需要出使用:
[selfdownSecondHandle:@"1494622800000"];
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。