美文网首页
封装方法 抢购活动“距开始(结束)x天x小时x秒”并倒计时

封装方法 抢购活动“距开始(结束)x天x小时x秒”并倒计时

作者: lllaa | 来源:发表于2017-11-21 15:29 被阅读8次

项目中要实现如图的效果

1.定时器每秒刷新

- (void)awakeFromNib {

[super awakeFromNib];

self.timeLabel.backgroundColor = [UIColor colorWithWhite:1 alpha:0.7];

self.timeLabel.layer.masksToBounds = YES;

self.timeLabel.layer.cornerRadius = 5.0f;

self.timeLabel.textColor = [UIColor darkGrayColor];

self.timeLabel.font = [UIFont systemFontOfSize:14];

_timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(countDownAction) userInfo:nil repeats:YES];

}

2.后台获取活动的开始时间和结束时间,调用封装好的方法

-(void)countDownAction

{

//活动开始时间

NSString *startStr = [tools timeWithTimeIntervalString:self.purchaseModel.startTime];

//活动结束时间

NSString *endStr = [tools timeWithTimeIntervalString:self.purchaseModel.endTime];

//显示

NSString *chaString= [tools dateTimeDifferenceWithStartTime:startStr endTime:endStr];

self.timeLabel.text = [NSString stringWithFormat:@"%@",chaString];

}

方法是比较三个时间,当前时间,开始时间和结束时间


+ (NSString *)dateTimeDifferenceWithStartTime:(NSString *)startTime endTime:(NSString *)endTime

{

NSDateFormatter *date = [[NSDateFormatter alloc]init];

[date setDateFormat:@"yyyy-MM-dd HH:mm:ss"];

NSDate *nowD = [NSDate date];

NSDate *endD = [date dateFromString:endTime];

NSDate *startD = [date dateFromString:startTime];

NSTimeInterval now = [nowD timeIntervalSince1970]*1;

NSTimeInterval end = [endD timeIntervalSince1970]*1;

NSTimeInterval start = [startD timeIntervalSince1970]*1;

//now是现在时间  end是结束的时间

if ((end -now>0)&&( now - start>0)){

//if (end >now>start) {

NSTimeInterval value = end - now;

int second = (int)value %60;//秒

int minute = (int)value /60%60;

int house = (int)value / (24 *3600)%3600;

int day = (int)value / (24 *3600);

NSString *str;

if (day != 0) {

str = [NSString stringWithFormat:@"距结束%d天%d小时%d分%d秒",day,house,minute,second];

}else if (day==0 && house !=0) {

str = [NSString stringWithFormat:@"距结束%d小时%d分%d秒",house,minute,second];

}else if (day==0 && house==0 && minute!=0) {

str = [NSString stringWithFormat:@"距结束%d分%d秒",minute,second];

}else{

str = [NSString stringWithFormat:@"距结束%d秒",second];

}

return str;

}else if (now -start<0)

{

NSTimeInterval value = start-now;

int second = (int)value %60;//秒

int minute = (int)value /60%60;

int house = (int)value / (24 *3600)%3600;

int day = (int)value / (24 *3600);

NSString *str;

if (day != 0) {

str = [NSString stringWithFormat:@"距开始%d天%d小时%d分%d秒",day,house,minute,second];

}else if (day==0 && house !=0) {

str = [NSString stringWithFormat:@"距开始%d小时%d分%d秒",house,minute,second];

}else if (day==0 && house==0 && minute!=0) {

str = [NSString stringWithFormat:@"距开始%d分%d秒",minute,second];

}else{

str = [NSString stringWithFormat:@"距开始%d秒",second];

}

return str;

}else

{

NSString *str = @" 已结束 ";

return str;

}

}

注意:时间label是加载在cell中,所以在定时器写在了awakeFromNib中,原来还纠结写在setmodel方法中 不可行!

相关文章

网友评论

      本文标题:封装方法 抢购活动“距开始(结束)x天x小时x秒”并倒计时

      本文链接:https://www.haomeiwen.com/subject/vykwvxtx.html