iOS 秒杀倒计时 从服务器获得时间戳秒杀开始和结束倒计时。
2016-11-23 15:20
253 查看
@implementation GoodsViewController
{
dispatch_source_t _timer;
}
// 求两个时间的时, 分 ,秒
+(NSArray *)getTwoDataMin:(NSString *)stamp1 andWith:(NSString *)stamp2{
NSTimeInterval timeInterval1 = [stamp1
doubleValue];
NSTimeInterval timeInterval2 = [stamp2
doubleValue];
NSDate *dateBefore1 = [NSDate
dateWithTimeIntervalSince1970:timeInterval1];
NSDate *dateBefore2 = [NSDate
dateWithTimeIntervalSince1970:timeInterval2];
// NSDateFormatter *dateFormat=[[NSDateFormatter alloc] init];
// [dateFormat setDateFormat:@"HH:mm:ss"];
// NSString * date1 =[dateFormat stringFromDate:dateBefore1];
// NSString * date2 =[dateFormat stringFromDate:dateBefore1];
// 当前日历
NSCalendar *calendar = [NSCalendar
currentCalendar];
// 需要对比的时间数据
NSCalendarUnit unit =
NSCalendarUnitYear |
NSCalendarUnitMonth
| NSCalendarUnitDay |
NSCalendarUnitHour |
NSCalendarUnitMinute | NSCalendarUnitSecond;
// 对比时间差
NSDateComponents *dateCom = [calendar
components:unit fromDate:dateBefore1
toDate:dateBefore2
options:0];
NSArray * dataArray =
@[[NSString
stringWithFormat:@"%ld",dateCom.hour],[NSString
stringWithFormat:@"%ld",dateCom.minute],[NSString
stringWithFormat:@"%ld",dateCom.second]];
return dataArray;
}
//_timeArray 上个方法返回的数组
-(void)timeToActivity{
if (_timer==nil) {
__block
int second = [_timeArray[2]
intValue];
__block
int min = [_timeArray[1]
intValue];
__block
int hour = [_timeArray[0]
intValue];
if (second==0&&min==0&&hour==0)
{
}else{
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(second==0&&min==0&&hour==0){
//倒计时结束,关闭
dispatch_source_cancel(_timer);
_timer =
nil;
dispatch_async(dispatch_get_main_queue(), ^{
endHour.text =
@"00";
endMin.text =
@"00";
endSecond.text =
@"00";
});
}else{
dispatch_async(dispatch_get_main_queue(), ^{
endHour.text = [NSString
stringWithFormat:@"%d",hour];
endMin.text = [NSString
stringWithFormat:@"%d",min];
endSecond.text = [NSString
stringWithFormat:@"%d",second];
if (second==0&&min>0&&hour>=0)
{ // 01:20:00
second = 60;
min--;
}else
if (second==0&&min==0&&hour>0)
{ //01:00:00
second=60;
min=59;
hour--;
}
});
second--;
}
});
dispatch_resume(_timer);
}
}
}
{
dispatch_source_t _timer;
}
// 求两个时间的时, 分 ,秒
+(NSArray *)getTwoDataMin:(NSString *)stamp1 andWith:(NSString *)stamp2{
NSTimeInterval timeInterval1 = [stamp1
doubleValue];
NSTimeInterval timeInterval2 = [stamp2
doubleValue];
NSDate *dateBefore1 = [NSDate
dateWithTimeIntervalSince1970:timeInterval1];
NSDate *dateBefore2 = [NSDate
dateWithTimeIntervalSince1970:timeInterval2];
// NSDateFormatter *dateFormat=[[NSDateFormatter alloc] init];
// [dateFormat setDateFormat:@"HH:mm:ss"];
// NSString * date1 =[dateFormat stringFromDate:dateBefore1];
// NSString * date2 =[dateFormat stringFromDate:dateBefore1];
// 当前日历
NSCalendar *calendar = [NSCalendar
currentCalendar];
// 需要对比的时间数据
NSCalendarUnit unit =
NSCalendarUnitYear |
NSCalendarUnitMonth
| NSCalendarUnitDay |
NSCalendarUnitHour |
NSCalendarUnitMinute | NSCalendarUnitSecond;
// 对比时间差
NSDateComponents *dateCom = [calendar
components:unit fromDate:dateBefore1
toDate:dateBefore2
options:0];
NSArray * dataArray =
@[[NSString
stringWithFormat:@"%ld",dateCom.hour],[NSString
stringWithFormat:@"%ld",dateCom.minute],[NSString
stringWithFormat:@"%ld",dateCom.second]];
return dataArray;
}
//_timeArray 上个方法返回的数组
-(void)timeToActivity{
if (_timer==nil) {
__block
int second = [_timeArray[2]
intValue];
__block
int min = [_timeArray[1]
intValue];
__block
int hour = [_timeArray[0]
intValue];
if (second==0&&min==0&&hour==0)
{
}else{
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(second==0&&min==0&&hour==0){
//倒计时结束,关闭
dispatch_source_cancel(_timer);
_timer =
nil;
dispatch_async(dispatch_get_main_queue(), ^{
endHour.text =
@"00";
endMin.text =
@"00";
endSecond.text =
@"00";
});
}else{
dispatch_async(dispatch_get_main_queue(), ^{
endHour.text = [NSString
stringWithFormat:@"%d",hour];
endMin.text = [NSString
stringWithFormat:@"%d",min];
endSecond.text = [NSString
stringWithFormat:@"%d",second];
if (second==0&&min>0&&hour>=0)
{ // 01:20:00
second = 60;
min--;
}else
if (second==0&&min==0&&hour>0)
{ //01:00:00
second=60;
min=59;
hour--;
}
});
second--;
}
});
dispatch_resume(_timer);
}
}
}
相关文章推荐
- 通过时间,获得星期的开始时间,结束时间
- java获得指定的开始时间与结束时间之间的所有日期
- 使用java的Calendar对象获得当前日期的上几个度开始、结束时间
- JS获得合同年限并且开始时间和结束时间必须是整年
- IOS 根据日期,获取该日期所在周,月,年的开始日期,结束日期 的方法,还有下一周或者上一周的时间
- PHP获得指定日期的 星期的开始时间 结束时间
- PHP获得某天某星期某月的开始结束时间
- 获得指定日期的周开始时间和周结束时间
- 开始时间,结束时间,获得中间的时间天数的集合
- 根据当前日期,获得本周的周一及周日日期即本周的开始时间和结束时间
- 根据请假开始时间和结束时间获得天数小时数分钟数
- iOS开发之-- 抢购、距活动结束,剩余时间倒计时
- IOS关于大型网站抢购、距活动结束,剩余时间倒计时的实现代码
- iOS根据所得到的开始时间计算结束的时间
- NTP协议网络时间同步 ios中应用 实现秒杀倒计时
- java时区——获得某一时区的某一时刻一天的开始结束时间
- 根据开始时间和结束时间,获得时间段
- js获得本周,本月,本季度的开始日期和结束日期
- 以服务器时间为基准显示到某一时间的倒计时
- sql 获取当天开始时间 结束时间