奇葩需求系列-距離明天十二點倒計時

#### 需求
產品中有一個分紅領取收益,只限制上午十二點之前領取有效,並且只能領取一次(後臺限制)。所以需要一個倒計時,有兩種情況:
1.今天未超過十二點,eg:11:00  倒計時 01:00 :60
2.今天已超過十二點,eg:13:00 倒計時 23:00:60
#### 效果圖
![微信圖片_20200220101611.png](https://upload-images.jianshu.io/upload_images/6544435-f6277d4b1d2bae4c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
我用的是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);
    }
```
僅僅記錄此變態需求,如有巧合歡迎借鑑~,有更好的歡迎指出,本人虛心受教。感謝閱讀!

發佈了4 篇原創文章 · 獲贊 4 · 訪問量 7592
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章