Java 实现倒计时功能(由秒计算天、小时、分钟、秒)

所属分类: 软件编程 / java 阅读数: 21
收藏 0 赞 0 分享

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

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

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

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

更多精彩内容其他人还在看

Java基础之反射原理与用法详解

这篇文章主要介绍了Java基础之反射原理与用法,结合实例形式详细分析了java反射的相关概念、原理、使用方法与操作注意事项,需要的朋友可以参考下
收藏 0 赞 0 分享

java字符串的截取方法substring()代码解析

这篇文章主要介绍了java字符串的截取方法substring()代码解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
收藏 0 赞 0 分享

Mybatis一对多关联关系映射实现过程解析

这篇文章主要介绍了Mybatis一对多关联关系映射实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
收藏 0 赞 0 分享

Java整数和字符串相互转化实例详解

这篇文章主要介绍了Java整数和字符串相互转化实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
收藏 0 赞 0 分享

Spring Boot 项目设置网站图标的方法

这篇文章主要介绍了Spring Boot 项目设置网站图标的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

java多态机制原理特点详解

在本篇文章里小编给大家分享的是关于java多态机制原理特点详解,有需要的朋友们可以跟着学习下。
收藏 0 赞 0 分享

Jmeter如何添加循环控制器

这篇文章主要介绍了Jmeter如何添加循环控制器,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
收藏 0 赞 0 分享

java虚拟机创建失败的原因整理

在本篇文章里小编给大家整理了关于创建java虚拟机失败的解决方法和知识点,需要的朋友们可以参考学习下。
收藏 0 赞 0 分享

Java如何把int类型转换成byte

这篇文章主要介绍了Java如何把int类型转换成byte,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
收藏 0 赞 0 分享

linux中java获取路径的实例代码

在本篇文章里小编给大家整理的是一篇关于linux中java获取路径的实例代码以及相关知识点,有兴趣的朋友们可以学习参考下。
收藏 0 赞 0 分享
查看更多