Java 實(shí)現(xiàn)倒計(jì)時(shí)功能(由秒計(jì)算天、小時(shí)、分鐘、秒)
有時(shí)候會(huì)要求實(shí)現(xiàn)這樣一個(gè)需求:
天、小時(shí)、分鐘、秒的數(shù)值都是隔開的,服務(wù)器端只返回一個(gè)時(shí)間戳長度。
以下就是我的實(shí)現(xiàn)方案,力求減少對(duì)象生成、減小計(jì)算量:
import java.util.Timer; import java.util.TimerTask; public class CountDownUtils { private static long day = 0; private static long hour = 0; private static long minute = 0; private static long second = 0; private static boolean dayNotAlready = false; private static boolean hourNotAlready = false; private static boolean minuteNotAlready = false; private static boolean secondNotAlready = false; public static void main(String[] args) { long totalSeconds = 60 * 60 * 24 * 34 + 21; initData(totalSeconds); new Timer().schedule(new TimerTask() { public void run() { if (secondNotAlready) { startCount(); } else { cancel(); } } }, 0, 1000); } /** * 初始化賦值 * * @param totalSeconds */ private static void initData(long totalSeconds) { resetData(); if (totalSeconds > 0) { secondNotAlready = true; second = totalSeconds; if (second >= 60) { minuteNotAlready = true; minute = second / 60; second = second % 60; if (minute >= 60) { hourNotAlready = true; hour = minute / 60; minute = minute % 60; if (hour > 24) { dayNotAlready = true; day = hour / 24; hour = hour % 24; } } } } System.out.println("初始格式化后——>" + day + "天" + hour + "小時(shí)" + minute + "分鐘" + second + "秒"); } private static void resetData() { day = 0; hour = 0; minute = 0; second = 0; dayNotAlready = false; hourNotAlready = false; minuteNotAlready = false; secondNotAlready = false; } /** * 計(jì)算各個(gè)值的變動(dòng) * */ public static void startCount() { if (secondNotAlready) { if (second > 0) { second--; if (second == 0 && !minuteNotAlready) { secondNotAlready = false; } } else { if (minuteNotAlready) { if (minute > 0) { minute--; second = 59; if (minute == 0 && !hourNotAlready) { minuteNotAlready = false; } } else { if (hourNotAlready) { if (hour > 0) { hour--; minute = 59; second = 59; if (hour == 0 && !dayNotAlready) { hourNotAlready = false; } } else { if (dayNotAlready) { day--; hour = 23; minute = 59; second = 59; if (day == 0) { dayNotAlready = false; } } } } } } } } System.out.println("距離截止日期還有——>" + day + "天" + hour + "小時(shí)" + minute + "分鐘" + second + "秒"); } }
總結(jié)
以上所述是小編給大家介紹的Java 實(shí)現(xiàn)倒計(jì)時(shí)功能(由秒計(jì)算天、小時(shí)、分鐘、秒),希望對(duì)大家有所幫助,如果大家有任何疑問請給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
- Java 獲取當(dāng)前時(shí)間及實(shí)現(xiàn)時(shí)間倒計(jì)時(shí)功能【推薦】
- android使用Rxjava實(shí)現(xiàn)倒計(jì)時(shí)功能
- Rxjava實(shí)現(xiàn)發(fā)送驗(yàn)證碼倒計(jì)時(shí)功能
- Android 使用 RxJava2 實(shí)現(xiàn)倒計(jì)時(shí)功能的示例代碼
- Android使用Kotlin和RxJava 2.×實(shí)現(xiàn)短信驗(yàn)證碼倒計(jì)時(shí)效果
- Android 用RxBinding與RxJava2實(shí)現(xiàn)短信驗(yàn)證碼倒計(jì)時(shí)功能
- 詳解java倒計(jì)時(shí)三種簡單實(shí)現(xiàn)方式
- Java編程倒計(jì)時(shí)實(shí)現(xiàn)方法示例
- Java倒計(jì)時(shí)三種實(shí)現(xiàn)方式代碼實(shí)例
相關(guān)文章
超詳細(xì)講解Java秒殺項(xiàng)目登陸模塊的實(shí)現(xiàn)
這是一個(gè)主要使用java開發(fā)的秒殺系統(tǒng),項(xiàng)目比較大,所以本篇只實(shí)現(xiàn)了登陸模塊,代碼非常詳盡,感興趣的朋友快來看看2022-03-03java實(shí)現(xiàn)HmacSHA256算法進(jìn)行加密方式
這篇文章主要介紹了java實(shí)現(xiàn)HmacSHA256算法進(jìn)行加密方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08使用ServletInputStream()輸入流讀取圖片方式
這篇文章主要介紹了使用ServletInputStream()輸入流讀取圖片方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-10-10java數(shù)據(jù)庫批量插入數(shù)據(jù)的實(shí)現(xiàn)
本文主要介紹了java數(shù)據(jù)庫批量插入數(shù)據(jù)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-05-05SpringBoot Validation入?yún)⑿r?yàn)國際化的項(xiàng)目實(shí)踐
在Spring Boot中,可以使用Validation和國際化來實(shí)現(xiàn)對(duì)入?yún)⒌男r?yàn),本文就來介紹一下SpringBoot Validation入?yún)⑿r?yàn)國際化,具有一定的參考價(jià)值,感興趣的可以了解一下2023-10-10spring注解識(shí)別一個(gè)接口的多個(gè)實(shí)現(xiàn)類方法
下面小編就為大家?guī)硪黄猻pring注解識(shí)別一個(gè)接口的多個(gè)實(shí)現(xiàn)類方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-04-04Java如何設(shè)置系統(tǒng)參數(shù)和運(yùn)行參數(shù)
這篇文章主要介紹了Java如何設(shè)置系統(tǒng)參數(shù)和運(yùn)行參數(shù),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04spring-boot react如何一步一步實(shí)現(xiàn)增刪改查
這篇文章主要介紹了spring-boot react如何一步一步實(shí)現(xiàn)增刪改查,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-11-11