Java日期時間API系列41-----根據毫秒值計算倒計時

  會有一個比較常見的需求,計算倒計時,比如,計算距離某時間剩餘時間(27小時10分鐘30秒、1天3小時10分鐘30秒)或者已經進行了多長時間等。下面是2種實現代碼:其中第一種超過1天會體現在小時上,比如27小時10分鐘30秒。

 

    /**
     * 根據毫秒值計算倒計時
     * @param millis 相差毫秒值
     * @return 返回倒計時,millis 小於等於0 返回:0小時0分鐘0秒
     */
    public static String countdown(long millis){
        if (millis <= 0) {
            return "0小時0分鐘0秒";
        }
        Duration duration = Duration.ofMillis(millis);
        long hours =  duration.getSeconds() / XkTimeConstant.SECONDS_PER_HOUR;
        int minutes = (int) ((duration.getSeconds() % XkTimeConstant.SECONDS_PER_HOUR) / XkTimeConstant.SECONDS_PER_MINUTE);
        int seconds = (int) (duration.getSeconds() % XkTimeConstant.SECONDS_PER_MINUTE);
        StringBuilder buf = new StringBuilder(24);
        buf.append(hours).append("小時");
        buf.append(minutes).append("分鐘");
        buf.append(seconds).append("秒");
        return buf.toString();
    }
    
    /**
     * 根據毫秒值計算倒計時,包含天數
     * @param millis 相差毫秒值
     * @return 返回倒計時,millis 小於等於0 返回:0天0小時0分鐘0秒
     */
    public static String countdownWithDay(long millis){
        if (millis <= 0) {
            return "0天0小時0分鐘0秒";
        }
        Duration duration = Duration.ofMillis(millis);
        long days =  duration.getSeconds() / XkTimeConstant.SECONDS_PER_DAY;
        int hours =  (int) ((duration.getSeconds() % XkTimeConstant.SECONDS_PER_DAY) / XkTimeConstant.SECONDS_PER_HOUR);
        int minutes = (int) ((duration.getSeconds() % XkTimeConstant.SECONDS_PER_HOUR) / XkTimeConstant.SECONDS_PER_MINUTE);
        int seconds = (int) (duration.getSeconds() % XkTimeConstant.SECONDS_PER_MINUTE);
        StringBuilder buf = new StringBuilder(24);
        buf.append(days).append("天");
        buf.append(hours).append("小時");
        buf.append(minutes).append("分鐘");
        buf.append(seconds).append("秒");
        return buf.toString();
    }

 

 

源碼地址: https://github.com/xkzhangsan/xk-time

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章