iOS倒計時,顯示剩餘天 時 分 秒

2021-07-09 10:14:30 字數 1593 閱讀 7068

做專案中經常會遇到秒殺、搶商品啊等等。那麼這個十分秒的倒數是如何**實現的呢!

通常後台會給我們乙個時間戳活著截至日期(deadline)。那麼無論是時間戳還是乙個具體的日期時間點,我們的處理邏輯都是這樣的。統一處理成nsdate物件,那麼就起名叫做enddate吧。我們還有乙個開始時間,就是當前時間,命名為startdate。

我們要取到enddate和startdate的間隔有多久,有多長的時間間隔。那麼廢話少說,開始看**,這樣更清晰。 

//結束時間 

detaileddict[@」endtime」]為服務端返回的資料。 

nsdateformatter *dateformatter=[[nsdateformatter alloc] init]; 

if ([detaileddict[@」endtime」] length]==10) else 

// 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) else 

這裡用到這個 dispatch_source_t _timer; 

把timer定義為全域性的。

if (_timer==nil) );

}else

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(), ^else

if (hours<10) else

if (minute<10) else

if (second<10) else

});timeout--;

}});

dispatch_resume(_timer);

}}

倒計時包括天時分秒

專案中有包括天時分秒的倒計時需求,現整理如下,希望幫到有此需求的夥伴 如果後天返回的時間格式為yyyy mm dd hh mm ss 則需要做一些處理轉換成時間戳 dateformat dataformat new dateformat yyyy mm dd hh mm ss trycatch ex...

iOS實現倒計時顯示 時 分 秒

1.建立乙個類繼承自uilabel.用來顯示 時 分 秒 h檔案 import inte ce timelable uilabel property nonatomic,assign nsinteger second property nonatomic,assign nsinteger minut...

js 實現 時分秒 倒計時

計算和顯示的變數分離 h m s用於計算,均為0 59 h1 m1 s1用於顯示 設定定時器,讓s每隔1秒減1 當s 0時,s 59,m m 1 當m 0時,m 59,h h 1 當h 0時,h m s 0,並清除定時器 當h m s小於10時,h1 m1 s1分別前面補0佔位 時間差獲取天時分秒 ...