JavaDailyReports10_15
2020-10-15
16:12:16
今天学习了如何实现倒计时控制程序的运行:
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 }
JavaDailyReports10_15的更多相关文章
随机推荐
- 第7.8节  Python中隐秘的类封装方法
			
前面章节已经介绍了Python中的多态和继承,本节将介绍面向对象程序设计OOP三大特征的另一个特征--封装. 一. 概念 封装是将对象的状态信息(也就是数据.属性)隐藏在对象内部,将对象的属性和 ...
 - PyQt(Python+Qt)学习随笔:QListWidget获取指定行对应项的item()方法
			
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 在列表部件中,可以通过item方法获取指定行对应的项,语法如下: QListWidgetItem i ...
 - PyQt学习随笔:Qt中tem Views(Model-Based)和Item Widgets(Item-Based)控件的用途和关系
			
在界面程序开发中,数据的展示主要包括表格.简单列表.树状列表以及纯文本等多种方式,在Qt中将界面表格.简单列表.树状列表称为"表项视图类(item view class)",并提供 ...
 - PyQt(Python+Qt)学习随笔:Qt Designer中部件的快捷菜单策略(contextMenuPolicy)取值及含义
			
在Qt Designer中可以设置部件的快捷菜单策略,快捷菜单通过在部件上点击鼠标右键触发. 快捷菜单策略通过枚举类型Qt.ContextMenuPolicy来定义,对应枚举类型取值及含义如下: 通过 ...
 - 利用反射注册SpringCache的RedisCacheManager缓存信息
			
项目开发中,SpringCache是一个非常方便的工具,但是在配置信息注册时,用枚举方式可以满足遍历,但却无法应用在@Cacheable注解里,因此可以通过静态类的方式,借助反射完成缓存信息注册. 配 ...
 - jquery.sticky 粘性滚动插件使用
			
一个jQuery插件,使你能够做任何元素在您的网页上总是可见的,可以作为顶部固定导航显示插件. 官网地址:http://stickyjs.com/ github:https://github.com/ ...
 - 最简 Spring AOP 源码分析!
			
前言 最近在研究 Spring 源码,Spring 最核心的功能就是 IOC 容器和 AOP.本文定位是以最简的方式,分析 Spring AOP 源码. 基本概念 上面的思维导图能够概括了 Sprin ...
 - MySQL技术内幕InnoDB存储引擎(六)——锁
			
什么是数据库的锁? 锁是数据库系统区别于文件系统的一个关键特性.锁机制用于管理对共享资源的并发访问.让数据库事务满足隔离性的要求. InnoDB 中锁的作用 不仅用于对数据进行并发访问,还还包括了缓冲 ...
 - java、tomcat安装
			
今天记录下如何安装java和tomcat,毕竟作为开发人员换电脑或重装系统后都是要装好这些环境的. java的安装: 1.下载sdk,官网地址:https://www.oracle.com/techn ...
 - 写一个为await自动加上catch的loader逐渐了解AST以及babel
			
为什么要写这个loader 我们在日常开发中经常用到async await去请求接口,解决异步.可async await语法的缺点就是若await后的Promise抛出错误不能捕获,整段代码区就会卡住 ...