項目要求 根據後臺返回的時間戳 進行商品拍賣定時倒計時
後臺返回的時間格式是:yyyy-MM-dd HH:mm:ss
寫了一個時間轉換工具將後臺返回的時間字符串轉換爲指定的時間格式如下:
+ (NSTimeInterval)timeIntervalSinceNowWithDateStr:(NSString *)dateStr {
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";
NSDate *date = [formatter dateFromString:dateStr];
return [date timeIntervalSinceNow];
}
返回得到的是一個NSTimeInterval 類型的時間值
將這個時間值轉化爲固定樣式的時間格式 代碼如下:
+ (NSString *)intervalTimeStrWithTimeInterval:(NSTimeInterval)timeInterval {
if (timeInterval < 0) {
return @"00:00:00";
}
int interval = timeInterval;
NSString *intervalStr = @"";
NSString *hh = [NSString stringWithFormat:@"%d",interval/3600];
if ([hh length] == 1)
{
hh = [NSString stringWithFormat:@"0%@",hh];
}
NSString *mm = [NSString stringWithFormat:@"%d",(interval/60)%60];
if ([mm length] == 1)
{
mm = [NSString stringWithFormat:@"0%@",mm];
}
NSString *ss = [NSString stringWithFormat:@"%d",interval%60];
if ([ss length] == 1)
{
ss = [NSString stringWithFormat:@"0%@",ss];
}
intervalStr = [NSString stringWithFormat:@"%@:%@:%@",hh,mm,ss];
return intervalStr;
}
實現定時器 創建定時器
- (NSTimer *)auctionTimer {
if (!_auctionTimer) {
_auctionTimer = [CZTimerTool scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(auctionTimerAction) userInfo:nil repeats:YES];
}
return _auctionTimer;
}
通過時間的截取 實現定時器顯示效果
-(void)auctionTimerAction
{
self.timeInterval -= 1;
NSString *timeText = [CZDateTool intervalTimeStrWithTimeInterval:self.timeInterval];
self.hourLabel.text = [timeText substringWithRange:NSMakeRange(0, 2)];
self.minuteLabel.text = [timeText substringWithRange:NSMakeRange(3, 2)];
self.secondLabel.text = [timeText substringWithRange:NSMakeRange(6, 2)];
}
這樣就實現了上圖的定時器效果。