IOS 含天数、时、分、秒的倒计时
#pragma mark - 判断活动是否开始-倒计时
- (void)judementActiveTime
{
//活动倒计时
_activeTimer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(caculateActiveLeaveTime) userInfo:nil repeats:YES];
[_activeTimer fire];
}
#pragma mark - 倒计时计数
- (void)caculateActiveLeaveTime
{
//当前时间的时间戳
NSDate *dateNow = [NSDate date];
NSTimeInterval nowInterval = [dateNow timeIntervalSince1970];
NSString *nowStr = [NSString stringWithFormat:@"%.0f",nowInterval];
//倒计时的时间
NSString *restTimeStr;
if([self.falshSaleDatas.start isEqualToString:@"0"])
{
//距离活动结束倒计时
restTimeStr = self.falshSaleDatas.enddate;
}
else if ([self.falshSaleDatas.start isEqualToString:@"1"]){
//距离活动开始倒计时
restTimeStr = self.falshSaleDatas.date;
}
NSDateFormatter *actFormatter = [[NSDateFormatter alloc] init];
[actFormatter setDateFormat:@"YYYY-MM-dd HH:mm:ss"];
NSDate *date = [actFormatter dateFromString:restTimeStr];
NSString *activeTime = [NSString stringWithFormat:@"%ld", (long)[date timeIntervalSince1970]];
//指定一个活动即将开始的时间戳
// NSString *activeTime =@"1451401200";
if ([activeTime isEqualToString:nowStr])
{
_timeLab.text = @"倒计时 00:00:00";
[_activeTimer invalidate];
_activeTimer = nil;
//调用刷新限时抢购接口
[self getFlashSale];
return;
}
//先获取相差后台给的时间与现在时间相差几天几小时几分钟几秒钟
NSDate *timeDate = [NSDate dateWithTimeIntervalSince1970:(([activeTime doubleValue])-nowInterval-28800)];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"dd HH:mm:ss"];
NSString *timeStr = [formatter stringFromDate:timeDate];
//分割字符串,获得天数
NSArray *timeArr=[timeStr componentsSeparatedByString:@" "];
NSLog(@"timeArr--%@, ---%@",timeArr[0],timeArr[1]);
//重新添加格式,去掉天数(两个时间差小于24小时,系统自动归类时算1天,对显示不利)
[formatter setDateFormat:@"HH:mm:ss"];
NSString *timeStrCopy = [formatter stringFromDate:timeDate];
if([self.falshSaleDatas.start isEqualToString:@"0"])
{
//距离活动结束倒计时
if([timeArr[0] integerValue]>1){
//如果两个时间差小于24小时,系统自动归类时算1天,显示时,需要减去1
_timeLab.text = [NSString stringWithFormat:@"距活动结束仅剩 %d天 %@",[timeArr[0] integerValue]-1,timeStrCopy];
}
else{
_timeLab.text = [NSString stringWithFormat:@"距活动结束仅剩 %@",timeStrCopy];
}
}
else if ([self.falshSaleDatas.start isEqualToString:@"1"]){
//距离活动开始倒计时
if([timeArr[0] integerValue]>1){
//如果两个时间差小于24小时,系统自动归类时算1天,显示时,需要减去1
_timeLab.text = [NSString stringWithFormat:@"距活动开始还有 %d天 %@",[timeArr[0] integerValue]-1,timeStrCopy];
}
else{
_timeLab.text = [NSString stringWithFormat:@"距活动开始还有 %@",timeStrCopy];
}
}
}