Java 實現倒計時(由秒計算天、小時、分鐘、秒)__Java

來源:互聯網
上載者:User

有時候會要求實現這樣一個需求:


天、小時、分鐘、秒的數值都是隔開的,伺服器端只返回一個時間戳記長度。


以下就是我的實現方案,力求減少對象產生、減小計算量:

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 + "小時" + minute+ "分鐘" + second + "秒");}private static void resetData() {day = 0;hour = 0;minute = 0;second = 0;dayNotAlready = false;hourNotAlready = false;minuteNotAlready = false;secondNotAlready = false;}/** * 計算各個值的變動 *  */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 + "小時" + minute+ "分鐘" + second + "秒");}}


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.