會有一個比較常見的需求,計算倒計時,比如,計算距離某時間剩餘時間(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