iOS倒計時,顯示剩餘天、時、分、秒
iOS倒計時的實現,顯示剩餘天、時、分、秒
做專案中經常會遇到秒殺、搶商品啊等等。那麼這個十分秒的倒數是如何程式碼實現的呢!
通常後臺會給我們一個時間戳活著截至日期(deadLine)。那麼無論是時間戳還是一個具體的日期時間點,我們的處理邏輯都是這樣的。統一處理成NSDate物件,那麼就起名叫做endDate吧。我們還有一個開始時間,就是當前時間,命名為startDate。
我們要取到endDate和startDate的間隔有多久,有多長的時間間隔。那麼廢話少說,開始看程式碼,這樣更清晰。
//結束時間
detailedDict[@”endTime”]為服務端返回的資料。
NSDateFormatter *dateFormatter=[[NSDateFormatter alloc] init];
if ([detailedDict[@”endTime”] length]==10) {
[dateFormatter setDateFormat:@”yyyy-MM-dd”];
}else{
[dateFormatter setDateFormat:@”yyyy-MM-dd HH:mm:ss”];
}
// NSDate *endDate = [dateFormatter dateFromString:detailedDict[@”endTime”]];
NSDate *endDate = [dateFormatter dateFromString:@”2016-02-20”];
那麼這裡注意了,如果後臺給你的是這樣的具體日期,那麼我們還要多加一天的時間,畢竟要倒計時到 2016-02-20日的深夜0:00啊,下一秒就是2016-02-21日了。如果後臺給的是時間戳,那麼不用多加一天,因為時間戳就是個具體的時間點。
NSDate *endDate_tomorrow = [[NSDate alloc] initWithTimeIntervalSinceReferenceDate:([endDate timeIntervalSinceReferenceDate] + 24*3600)];
//當前時間
NSDate *startDate = [NSDate date];
//得到相差秒數
NSTimeInterval timeInterval =[endDate_tomorrow timeIntervalSinceDate:startDate];
下面處理UI顯示的邏輯
if (timeInterval==0) {
detailCell.yzImageView.hidden = NO;
過期了,倒計時結束了
}else{
detailCell.yzImageView.hidden = YES;
沒過期, 倒計時還會繼續
}
這裡用到這個 dispatch_source_t _timer;
把timer定義為全域性的。
if (_timer==nil) { __block int timeout = timeInterval; //倒計時時間 if (timeout!=0) { 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(timeout<=0){ //倒計時結束,關閉 dispatch_source_cancel(_timer); _timer = nil; dispatch_async(dispatch_get_main_queue(), ^{ detailCell.dayLabel.text = @""; detailCell.hourLabel.text = @"00"; detailCell.minuteLabel.text = @"00"; detailCell.secondLabel.text = @"00"; detailCell.yzImageView.hidden = NO; }); }else{ int days = (int)(timeout/(3600*24)); if (days==0) { detailCell.dayLabel.text = @""; } int hours = (int)((timeout-days*24*3600)/3600); int minute = (int)(timeout-days*24*3600-hours*3600)/60; int second = timeout-days*24*3600-hours*3600-minute*60; dispatch_async(dispatch_get_main_queue(), ^{ if (days==0) { detailCell.dayLabel.text = @""; }else{ detailCell.dayLabel.text = [NSString stringWithFormat:@"%d天",days]; } if (hours<10) { detailCell.hourLabel.text = [NSString stringWithFormat:@"0%d",hours]; }else{ detailCell.hourLabel.text = [NSString stringWithFormat:@"%d",hours]; } if (minute<10) { detailCell.minuteLabel.text = [NSString stringWithFormat:@"0%d",minute]; }else{ detailCell.minuteLabel.text = [NSString stringWithFormat:@"%d",minute]; } if (second<10) { detailCell.secondLabel.text = [NSString stringWithFormat:@"0%d",second]; }else{ detailCell.secondLabel.text = [NSString stringWithFormat:@"%d",second]; } }); timeout--; } }); dispatch_resume(_timer); } }
相關推薦
iOS倒計時,顯示剩餘天、時、分、秒
iOS倒計時的實現,顯示剩餘天、時、分、秒 做專案中經常會遇到秒殺、搶商品啊等等。那麼這個十分秒的倒數是如何程式碼實現的呢! 通常後臺會給我們一個時間戳活著截至日期(deadLine)。那麼無論是時間戳還是一個具體的日期時間點,我們的處理邏輯都是這樣的。統一處理成N
js根據當前時間和結束時間做倒計時(還有XXX天XXX時XXX分XXX秒)
js根據當前時間和結束時間做倒計時(還有XXX天XXX時XXX分XXX秒),當天,不需要XXX天數,剩餘0小時,不需要顯示XXX時,剩餘0分鐘,不需要顯示XXX分 1. js方法 2. HTML程式碼 1. js方法 /*
iOS -XX天xx時xx分xx秒部分改變顏色和字型大小
這個就是一個簡單的NSString改變為NSAttributedString後 對字串進行rang查詢和顏色替換。 直接上程式碼。 - (NSAttributedString *)transfor
時間(秒)轉時間字串(x天x時x分x秒)
前言 通常為了直觀表現時間會把時間數字轉成時間字串 eg: 輸入時間(秒):123456 輸出時間字串:1天10小時17分鐘36秒 直接上程式碼 public class NumToDateString { public static void main
JS 將秒轉為x天x時x分x秒
/* *@param s : 時間秒 */ function secondsFormat( s ) { var day = Math.floor( s/ (24*3600) ); // Math.floor()向下取整 var h
moment獲取天的23時59分59秒可以用moment().endOf(String),以及獲取天的0時0分0秒可以用moment().startOf('day')
-c att In string com sta sin nbsp monday 資料來源:https://segmentfault.com/a/1190000010045286 moment獲取天的23時59分59秒可以用moment().endOf(String
Js中Date日期的使用(加一天,加一個月,獲取0時0分0秒,23時59分59秒等)
程式碼示例如下:(以當前日期new Date()為例。也可以將例中new Date()換成任意Date物件)1.獲取今天的0時0分0秒(常用於開始日期的獲取)var startDate= new Date(new Date().toLocaleDateString()); /
訊號與系統學習之第一章(系統的六大基本性質定義與判別:無記憶性、可逆性、因果性、穩定性、時不變性、線性)
本人現在大三,由於準備明天研究生考試,故重新學習複習《訊號與系統》, 再接下來會將自己的一些學習經歷、知識總結與大家分享。對於有所紕漏的地方 希望大家能幫助指出以一同進步。 對於第一章,顯然其重中之重便是系統的六大基本性質,那麼接下來我會以官方解釋及自身的理解加上例題、易錯題、及後面
java 計算時間差,還剩下xx天xx小時xx分xx秒
計算時間差,還剩下xx天xx小時xx分xx秒 使用: final Handler handler = new Handler(); Runnable runnable = new
將秒數 [整數型] 匹配成 xx時 xx分xx秒
/** * 將秒數 匹配成 xx時 xx分xx秒 * * @param time * @return  
獲取當天0時0分0秒的時間戳 獲取當月的天數 js
initDateRange () { const end = new Date(new Date(new Date().toLocaleDateString()).getTime() + 24 * 60 * 60 * 1000 - 1) const start = new
go 獲得當天0時0分0秒時間戳
t := time.Now() tm1 := time.Date(t.Year(), t.Month(), t.Day(), 0, 0, 0, 0, t.Location()) tm2 := t
SQL中得到兩個日期之間相隔 xx天xx小時xx分xx秒
SQL SERVER中可以這麼做: DECLARE @dt1 AS datetime, @dt2 AS datetime; SELECT @dt1 = '2008-8-4 9:36:41', @dt2 = '2008-8-2 9:33:39'; DECLARE @Days
js 兩個時間戳之間怎麼計算相隔多少天多少小時多少分多少秒
/** * 計算時間戳之間的差值 * * @param start_time 開始時間戳 * @param end_time 結束時間戳 */function calculateDiffTime(start_time, end_time){ var startTime = 0, endTi
網頁顯示時間,時分秒轉化、倒計時原理
<script type="text/javascript"> //倒計時原理 = 未來時間點-現在時間點 //var iNow = new Date();/
js倒計時--天、時、分、秒, 到時間後自動停止
js倒計時–天、時、分、秒, 到時間後自動停止: <!DOCTYPE html> <html lang="en"> <head> <meta ch
ios UIWebView載入本地html時html樣式、圖片顯示出來
將h5檔案拖到專案中 選擇彈出框Added folders的Create folder references選擇 然後載入 例如 NSURL *url = [NSURL URLWithString:[[NSString stringWithFormat:@““] stringByAddi
iOS開發-顯示傳送時間(幾分鐘前,幾小時前,幾天前)
+ (NSString *) compareCurrentTime:(NSString *)str { //把字串轉為NSdate NSDateFormatter *dateForm
java程式碼計算時間差,精確到 天、月、日、時、分、秒、毫秒
/** * 兩個時間相差距離多少天多少小時多少分多少秒 * @param strTime1 時間引數 1 格式:2016-06-22 18:21:20 * @param strTime2 時間引數 2 格式:2016-06-22 17:21:2
iOS 使用MBProgressHUD,顯示時禁止使用者互動方法
MBProgressHUD *hud; //有文字 hud = [MBProgressHUD showHUDAddedTo:waitView animated:YES]; hud.userInterac