Java倒计时三种实现方式代码实例
作者:黑仔002 时间:2021-09-22 00:20:59
写完js倒计时,突然想用java实现倒计时,写了三种实现方式
一:设置时长的倒计时;
二:设置时间戳的倒计时;
三:使用java.util.Timer类实现的时间戳倒计时
代码如下:
package timer;
import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
/**
* java演示倒计时
*
*/
public class TimeTest {
public static int time = 60 * 60 * 60;
public static Calendar c;
public static long endTime;
public static Date date;
public static long startTime;
public static long midTime;
public static void main(String[] args) {
c = Calendar.getInstance();
c.set(2017, 4, 17, 0, 0, 0);// 注意月份的设置,0-11表示1-12月
// c.set(Calendar.YEAR, 2017);
// c.set(Calendar.MONTH, 4);
// c.set(Calendar.DAY_OF_MONTH, 17);
// c.set(Calendar.HOUR_OF_DAY, 0);
// c.set(Calendar.MINUTE, 0);
// c.set(Calendar.SECOND, 0);
endTime = c.getTimeInMillis();
date = new Date();
startTime = date.getTime();
midTime = (endTime - startTime) / 1000;
// time1();//方式一
time2();// 方式二
// time3();//方式三
}
/**
* 方式三: 使用java.util.Timer类进行倒计时
*/
private static void time3() {
Timer timer = new Timer();
timer.schedule(new TimerTask() {
public void run() {
midTime--;
long hh = midTime / 60 / 60 % 60;
long mm = midTime / 60 % 60;
long ss = midTime % 60;
System.out.println("还剩" + hh + "小时" + mm + "分钟" + ss + "秒");
}
}, 0, 1000);
}
/**
* 方式二: 设定时间戳,倒计时
*/
private static void time2() {
while (midTime > 0) {
midTime--;
long hh = midTime / 60 / 60 % 60;
long mm = midTime / 60 % 60;
long ss = midTime % 60;
System.out.println("还剩" + hh + "小时" + mm + "分钟" + ss + "秒");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
/**
* 方式一: 给定时长倒计时
*/
private static void time1() {
while (time > 0) {
time--;
try {
Thread.sleep(1000);
int hh = time / 60 / 60 % 60;
int mm = time / 60 % 60;
int ss = time % 60;
System.out.println("还剩" + hh + "小时" + mm + "分钟" + ss + "秒");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
运行结果:
time1()结果:
time2()结果:
time3()结果:
来源:https://www.cnblogs.com/heizai002/p/6862625.html
标签:Java,倒计时
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
使用C语言编写基于TCP协议的Socket通讯程序实例分享
2023-07-05 03:30:03
java实现上传文件类型检测过程解析
2023-11-09 12:04:21
深入解析Java并发程序中线程的同步与线程锁的使用
2022-03-19 10:25:38
![](https://img.aspxhome.com/file/2023/1/65621_0s.jpg)
分布式Netty源码分析EventLoopGroup及介绍
2022-02-12 03:20:51
![](https://img.aspxhome.com/file/2023/9/70289_0s.png)
C#实现回文检测的方法
2022-12-26 22:31:23
详解Java设计模式之桥接模式
2022-08-05 23:27:08
![](https://img.aspxhome.com/file/2023/3/83053_0s.png)
解决Android studio 2.3升级到Android studio 3.0 后apt报错问题
2023-05-17 13:56:50
基于java ssm springboot+mybatis酒庄内部管理系统设计和实现
2023-09-24 23:51:17
![](https://img.aspxhome.com/file/2023/9/58449_0s.jpg)
Android 二维码 生成和识别二维码 附源码下载
2023-05-01 12:45:01
![](https://img.aspxhome.com/file/2023/8/87298_0s.jpg)
使用java从乱码文本中解析出正确的文本
2023-12-03 12:10:22
C# ADO.NET 离线查询的实现示例
2023-06-12 00:52:03
![](https://img.aspxhome.com/file/2023/5/80995_0s.png)
一步步教你如何创建第一个C#项目
2021-08-15 04:41:56
![](https://img.aspxhome.com/file/2023/5/83295_0s.png)
java多线程并发中使用Lockers类将多线程共享资源锁定
2021-11-14 11:08:37
C# 特殊的string类型详解
2022-02-10 14:11:59
Android播放assets文件里视频文件相关问题分析
2021-08-10 20:04:41
c#委托把方法当成参数(实例讲解)
2021-07-29 04:38:14
C#开发教程之利用特性自定义数据导出到Excel
2023-03-02 22:55:42
![](https://img.aspxhome.com/file/2023/1/82231_0s.png)
关于@ConditionalOnProperty的作用及用法说明
2023-11-24 02:39:19
C#如何安全、高效地玩转任何种类的内存之Span的本质
2022-10-23 10:59:15
![](https://img.aspxhome.com/file/2023/8/77298_0s.png)
java实现快速打字游戏
2022-11-05 11:16:38