java倒计时三种简单实现方式

写完js倒计时,突然想用java实现倒计时,写了三种实现方式

一:设置时长的倒计时;

二:设置时间戳的倒计时;

三:使用java.util.Timer类实现的时间戳倒计时

代码如下:

 1 package timer;
 2
 3 import java.util.Calendar;
 4 import java.util.Date;
 5 import java.util.Timer;
 6 import java.util.TimerTask;
 7
 8 /**
 9  * java演示倒计时
10  *
11  */
12 public class TimeTest {
13     public static int time = 60 * 60 * 60;
14     public static Calendar c;
15     public static long endTime;
16     public static Date date;
17     public static long startTime;
18     public static long midTime;
19
20     public static void main(String[] args) {
21         c = Calendar.getInstance();
22         c.set(2017, 4, 17, 0, 0, 0);// 注意月份的设置,0-11表示1-12月
23         // c.set(Calendar.YEAR, 2017);
24         // c.set(Calendar.MONTH, 4);
25         // c.set(Calendar.DAY_OF_MONTH, 17);
26         // c.set(Calendar.HOUR_OF_DAY, 0);
27         // c.set(Calendar.MINUTE, 0);
28         // c.set(Calendar.SECOND, 0);
29         endTime = c.getTimeInMillis();
30         date = new Date();
31         startTime = date.getTime();
32         midTime = (endTime - startTime) / 1000;
33
34         // time1();//方式一
35         time2();// 方式二
36         // time3();//方式三
37     }
38
39     /**
40      * 方式三: 使用java.util.Timer类进行倒计时
41      */
42     private static void time3() {
43         Timer timer = new Timer();
44         timer.schedule(new TimerTask() {
45             public void run() {
46                 midTime--;
47                 long hh = midTime / 60 / 60 % 60;
48                 long mm = midTime / 60 % 60;
49                 long ss = midTime % 60;
50                 System.out.println("还剩" + hh + "小时" + mm + "分钟" + ss + "秒");
51             }
52         }, 0, 1000);
53     }
54
55     /**
56      * 方式二: 设定时间戳,倒计时
57      */
58     private static void time2() {
59
60         while (midTime > 0) {
61             midTime--;
62             long hh = midTime / 60 / 60 % 60;
63             long mm = midTime / 60 % 60;
64             long ss = midTime % 60;
65             System.out.println("还剩" + hh + "小时" + mm + "分钟" + ss + "秒");
66             try {
67                 Thread.sleep(1000);
68
69             } catch (InterruptedException e) {
70                 e.printStackTrace();
71             }
72         }
73     }
74
75     /**
76      * 方式一: 给定时长倒计时
77      */
78     private static void time1() {
79         while (time > 0) {
80             time--;
81             try {
82                 Thread.sleep(1000);
83                 int hh = time / 60 / 60 % 60;
84                 int mm = time / 60 % 60;
85                 int ss = time % 60;
86                 System.out.println("还剩" + hh + "小时" + mm + "分钟" + ss + "秒");
87             } catch (InterruptedException e) {
88                 e.printStackTrace();
89             }
90         }
91
92     }
93 }

运行结果:

time1()结果:

time2()结果:

time3()结果:

时间: 2024-11-08 20:10:24

java倒计时三种简单实现方式的相关文章

Java的三种编译方式

通常Java有三种编译方式,编译方式不同,那么得到的.class的大小也不同. 1)默认编译方式:javac A.java 2)  调试编译方式:javac -g A.java 3)  代码编译方式:javac -g:none A.java 案例如下:类A public class A{ public static void main(String args[]){ for(int i=0;i<100000;i++){ A a = new A(); } } } 通过上面这三种编译方式,得到的.c

Java的三种代理模式简述

本文着重讲述三种代理模式在java代码中如何写出,为保证文章的针对性,暂且不讨论底层实现原理,具体的原理将在下一篇博文中讲述. 代理模式是什么 代理模式是一种设计模式,简单说即是在不改变源码的情况下,实现对目标对象的功能扩展. 比如有个歌手对象叫Singer,这个对象有一个唱歌方法叫sing(). 1 public class Singer{ 2 public void sing(){ 3 System.out.println("唱一首歌"); 4 } 5 } 假如你希望,通过你的某种

LVS:三种负载均衡方式比较+另三种负载均衡方式

转:http://blog.csdn.net/u013256816/article/details/50705578 什么是LVS? ??首先简单介绍一下LVS (Linux Virtual Server)到底是什么东西,其实它是一种集群(Cluster)技术,采用IP负载均衡技术和基于内容请求分发技术.调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能的.高可用的虚拟服务器.整个服务器集群的结构对客户是透明的,而且无需修

.NET中的三种接口实现方式

摘自:http://www.cnblogs.com/zhangronghua/archive/2009/11/25/1610713.html 一般来说.NET提供了三种不同的接口实现方式,分别为隐式接口实现.显式接口实现.混合式接口实现.这三种方式各有各的特点. 首先来看隐式接口实现,这恐怕是我们使用最多的一种接口实现,因为隐匿接口实现是.NET的默认接口实现方式.下面让我们来看一个隐式接口实现的例子: using System; internal class MyClass { public

文顶顶 iOS开发UI篇—iOS开发中三种简单的动画设置

iOS开发UI篇—iOS开发中三种简单的动画设置 [在ios开发中,动画是廉价的] 一.首尾式动画 代码示例: // beginAnimations表示此后的代码要“参与到”动画中 [UIView beginAnimations:nil context:nil]; //设置动画时长 [UIView setAnimationDuration:2.0]; self.headImageView.bounds = rect; // commitAnimations,将beginAnimation之后的所

iOS开发UI篇—iOS开发中三种简单的动画设置

iOS开发UI篇—iOS开发中三种简单的动画设置 [在ios开发中,动画是廉价的] 一.首尾式动画 代码示例: // beginAnimations表示此后的代码要“参与到”动画中 [UIView beginAnimations:nil context:nil]; //设置动画时长 [UIView setAnimationDuration:2.0]; self.headImageView.bounds = rect; // commitAnimations,将beginAnimation之后的所

LVS:三种负载均衡方式比较

转载于http://soft.chinabyte.com/25/13169025.shtml 1.什么是LVS? 首先简单介绍一下LVS (Linux Virtual Server)到底是什么东西,其实它是一种集群(Cluster)技术,采用IP负载均衡技术和基于内容请求分发技术.调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能的.高可用的虚拟服务器.整个服务器集群的结构对客户是透明的,而且无需修改客户端和服务器端的程序

iOS开发中三种简单的动画设置

iOS开发中三种简单的动画设置 [在ios开发中,动画是廉价的] 一.首尾式动画 代码示例: // beginAnimations表示此后的代码要“参与到”动画中 [UIView beginAnimations:nil context:nil]; //设置动画时长 [UIView setAnimationDuration:2.0]; self.headImageView.bounds = rect; // commitAnimations,将beginAnimation之后的所有动画提交并生成动

了解mysql的三种不同安装方式的区别

学习目的:了解mysql的三种不同安装方式的区别 学习内容: mysql 的安装有三种:分别是源码安装.二进制安装.rpm安装. 源码安装的优势:linux操作系统开放源代码,因此在其上面安装的软件大部分也都是开源软件.开源软件基本都提供源码下载和源码安装的方式.源码安装的好处是用户可以自己定制软件的功能,安装需要的模块,不需要的功能可以不用安装,此外,用户还可以自己选择安装的路径,方便管理.卸载软件也很方便,只需要删除对应的安装目录即可.没有windows所谓的注册表之说. 源码安装软件的基本