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

 更新时间:2018年01月23日 15:53:05   作者:ganshenml  
最近做项目遇到这样的需求,天、小时、分钟、秒的数值都是隔开的,服务器端只返回一个时间戳长度,怎么实现这样的功能呢?下面小编给大家带来了Java 实现倒计时功能的方案,需要的朋友参考下吧

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

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

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

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中properties文件中的中文乱码问题

    Java中properties文件中的中文乱码问题

    Properties为了方便用户的配置,用于读取Java的配置文件,不同的编程语言有自己所支持的配置文件,能让用户够脱离程序本身去修改相关的变量设置,这篇文章主要介绍了Java中properties文件中的中文乱码问题,需要的朋友可以参考下
    2023-08-08
  • 使用JMeter进行接口高并发测试的实现

    使用JMeter进行接口高并发测试的实现

    本文主要介绍了使用JMeter进行接口高并发测试的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04
  • springboot druid数据库连接池连接失败后一直重连的解决方法

    springboot druid数据库连接池连接失败后一直重连的解决方法

    本文主要介绍了springboot druid数据库连接池连接失败后一直重连的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04
  • mybatis resultType自带数据类型别名解读

    mybatis resultType自带数据类型别名解读

    MyBatis为了简化开发,通过org.apache.ibatis.type.TypeAliasRegistry为常见类定义了别名,这些别名包括基本数据类型及其数组、集合类型等,如string对应java.lang.String,int对应java.lang.Integer等,此外,还有特殊前缀的别名如_int对应int类型
    2024-10-10
  • RocketMQ事务消息原理与使用详解

    RocketMQ事务消息原理与使用详解

    RocketMQ事务消息(Transactional Message)是指应用本地事务和发送消息操作可以被定义到全局事务中,要么同时成功,要么同时失败。RocketMQ的事务消息提供类似 X/Open XA 的分布式事务功能,通过事务消息能达到分布式事务的最终一致
    2023-02-02
  • Flask实现异步非阻塞请求功能实例解析

    Flask实现异步非阻塞请求功能实例解析

    这篇文章主要介绍了Flask实现异步非阻塞请求功能实例解析,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2018-02-02
  • java解决雪花ID在前端精度丢失问题

    java解决雪花ID在前端精度丢失问题

    雪花算法生成的64位Long类型ID在传递到前端时可能会因JavaScript的精度限制导致精度丢失,这篇文章主要介绍了java解决雪花ID在前端精度丢失问题的相关资料,需要的朋友可以参考下
    2024-11-11
  • Spring常见的事务失效场景及解决方案

    Spring常见的事务失效场景及解决方案

    Spring 事务管理是企业级应用开发中不可或缺的一部分,它可以帮助我们确保数据的一致性和完整性,然而,在实际开发中,由于各种原因,事务可能会失效,本文将详细介绍 Spring 事务失效的常见情况,并提供相应的解决方案和示例代码,需要的朋友可以参考下
    2024-11-11
  • AJAX+JAVA用户登陆注册验证的实现代码

    AJAX+JAVA用户登陆注册验证的实现代码

    这篇文章主要介绍了AJAX+JAVA用户登陆注册验证的实现代码,通过ajax异步刷新页面验证用户输入的账号密码是否在数据库中存在。非常具有实用价值,需要的朋友可以参考下
    2018-06-06
  • springboot配置文件中使用${}注入值的两种方式小结

    springboot配置文件中使用${}注入值的两种方式小结

    这篇文章主要介绍了springboot配置文件中使用${}注入值的两种方式小结,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03

最新评论