有时候会要求实现这样一个需求:

天、小时、分钟、秒的数值都是隔开的,服务器端只返回一个时间戳长度。

以下就是我的实现方案,力求减少对象生成、减小计算量:

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 + "秒");
 }
} 

总结

以上所述是小编给大家介绍的Java 实现倒计时功能(由秒计算天、小时、分钟、秒),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

02-04 05:25
查看更多