產品中有一個分成領取收益,只限制上午十二點以前領取有效,而且只能領取一次(後臺限制)。因此須要一個倒計時,有兩種狀況: 1.今天未超過十二點,eg:11:00 倒計時 01:00 :60 2.今天已超過十二點,eg:13:00 倒計時 23:00:60bash
我用的是kotlin,代碼以下:微信
//倒計時
job= launch(Dispatchers.Main) {
while (enableStartTime){
delay(1000)
val formatTime = BonusTimeUtil.stringForTime()
// logcat("倒計時時間 -----${formatTime}")
formatTime?.let {
val split = it.split(":")
tv_time_hour_one.text="${split[0].get(0)}"
tv_time_hour_two.text="${split[0].get(1)}"
tv_time_minute_one.text="${split[1].get(0)}"
tv_time_minute_two.text="${split[1].get(1)}"
tv_time_millisecond_one.text="${split[2].get(0)}"
tv_time_millisecond_two.text="${split[2].get(1)}"
}
}
}
複製代碼
時分秒沒有自定義,都是佈局添加的。省事~~ 時間工具類:工具
/**
* 根據當前時間距離明天12點的倒計時,若是當前小於12點就當今天12點的倒計時
* @return
*/
public static String stringForTime(){
//設置明天凌晨的時間 00:00:00,根據明天凌晨時間算距離差
Calendar instance = Calendar.getInstance();
instance.add(Calendar.DAY_OF_YEAR,1); //今天新增1
instance.set(Calendar.HOUR_OF_DAY,0); //小時設置0 ,24小時制
instance.set(Calendar.SECOND,0);//秒設置0
instance.set(Calendar.MINUTE,0);//分鐘設置0
instance.set(Calendar.MILLISECOND,0);//毫秒設置0
long time = instance.getTime().getTime(); //經過Calendar 從新設置獲取到新的時間
long second =(time - System.currentTimeMillis()) ; //新的時間減去當前的時間,時間差
//算出時間差中的小時 分鐘 秒
long totalSeconds = second/1000;
long seconds = totalSeconds % 60;
long minutes = (totalSeconds/60)%60;
long hours = totalSeconds/3600;
try {
long nowHour = Long.parseLong(getHours());
//判斷小時是否超過12,判斷是否當前時間已經超過上午12點
if(nowHour < 12){
hours=11-nowHour;
}else{
hours=24-nowHour+11;
}
return new Formatter().format("%02d:%02d:%02d",hours,minutes,seconds).toString();
}catch (Exception e){
e.printStackTrace();
return "00:00:00";
}
}
/**
* 獲取當前的小時數進行判斷
*
* @return
*/
public static String getHours() {
Date currentTime = new Date();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return formatter.format(currentTime).substring(11, 13);
}
複製代碼
僅僅記錄此變態需求,若有巧合歡迎借鑑~,有更好的歡迎指出,本人虛心受教。感謝閱讀!佈局