import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.Scanner;
import java.util.Timer;
import java.util.TimerTask;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class CountDown extends TimerTask {
private static long targetInMill;
private static boolean flag = true;
private static Timer timer;
public static void main(String[] args) {
init();
CountDown cd = new CountDown();
long delay = 1000;
timer = new Timer();
timer.schedule(cd, 0, delay);
}
// 设定目标时间
private static void init() {
Scanner sc = new Scanner(System.in);
try {
//输入时间
String targetTime = sc.nextLine();
//验证时间
Pattern p = Pattern
.compile("^(19|20)\\d\\d[-/.]((0[1-9])|([1-9])|(1[0-2]))[-/.](([0-2][1-9])|([1-2]0)|(3[0-1])|([1-9])) (([0-1]\\d)|([1-9])|(2[0-3]|(0))):(([0-5]\\d)|([1-9])):(([0-5]\\d)|([1-9]))$");
Matcher m = p.matcher(targetTime);
if (!m.matches()) {
throw new Exception("输入日期格式不对");
}
int year, month, day, hour, minute, second;
String date = targetTime.split(" ")[0];
String time = targetTime.split(" ")[1];
year = Integer.valueOf(date.split("-")[0]);
month = Integer.valueOf(date.split("-")[1]);
day = Integer.valueOf(date.split("-")[2]);
hour = Integer.valueOf(time.split(":")[0]);
minute = Integer.valueOf(time.split(":")[1]);
second = Integer.valueOf(time.split(":")[2]);
Calendar target = new GregorianCalendar(year, month - 1, day, hour,
minute, second);
//将目标时间化成毫秒
targetInMill = target.getTimeInMillis();
} catch (Exception e) {
e.printStackTrace();
System.err.println(e.toString());
}
}
// 开始计时
public void run() {
try {
Calendar today = new GregorianCalendar();
//将当前时间化成毫秒
long todayInMill = today.getTimeInMillis();
//获取时间差
long dd = targetInMill - todayInMill;
//将当前时间化成毫秒
long dis = dd / 1000;
String d;
int day = (int) (dis / (3600 * 24));
int hour = (int) (dis % (3600 * 24) / 3600);
int min = (int) (dis % 3600 / 60);
int sec = (int) (dis % 60);
if (day < 10)
d = " " + day;
else if (day >= 10 && day < 100)
d = " " + day;
else
d = day + "";
String s = d + " 天 " + Integer.valueOf(hour) + " 小时 "
+ Integer.valueOf(min) + " 分 " + Integer.valueOf(sec)
+ " 秒";
System.out.println(s);
//如果时间差是负值,则计数器关闭
if (dd <= 0) {
System.out.println("时间到");
flag = false;
}
} catch (Exception e) {
System.err.println(e.toString());
}finally{
while(!flag){
timer.cancel();
}
}
}
}
分享到:
相关推荐
Java倒计时源代码是一种基于Java编程语言实现的简单应用程序,用于显示从特定时间开始的倒计时。这个程序特别适合那些需要定时提醒或者计时功能的场景,比如考试倒计时、活动倒计时等。它包含了源代码文件以及打包好...
Java 倒计时器代码详解 Java 倒计时器代码是利用 Java 语言编写的一种倒计时器程序,主要实现倒计时的功能。下面是对 Java 倒计时器代码的详细解释: 一、Java 倒计时器代码结构 Java 倒计时器代码主要由两个类...
Java倒计时程序设计与实现 Java倒计时程序是指使用Java语言编写的倒计时应用程序,能够实时显示倒计时信息。下面是关于Java倒计时程序的设计与实现细节。 一、倒计时程序的设计思想 倒计时程序的设计思想是基于...
【JAVA倒计时器】是一种基于JAVA编程语言实现的简单计时工具,它主要用于实现从预设时间开始向后计算的倒计时功能。对于初学者来说,这是一个很好的实践项目,因为它涉及到基本的用户界面设计、事件处理以及时间管理...
在Java编程语言中,创建一个倒计时器是一...综上所述,这个"java倒计时器"项目涵盖了多方面的Java技术,包括时间处理、线程编程、用户输入、音频播放和GUI交互。它展示了Java在构建实用应用程序中的灵活性和强大功能。
本项目名为"JAVA倒计时器练习程序",它提供了一个基础的实现,能够进行多组倒计时,这对于初学者来说是一个很好的实践和学习机会。 首先,我们要理解Java编程的基础。Java是一种面向对象的编程语言,由Sun ...
### Java倒计时程序解析与实现 在IT领域,尤其是软件开发中,倒计时功能是一种常见的需求,常用于各种应用程序如活动计时、赛事倒数等场景。本篇文章将深入解析一个基于Java语言编写的倒计时程序,探讨其核心逻辑、...
Java Applet是一个嵌入在网页中的小程序,由Java语言编写,可以提供丰富的交互性功能,如本例中的倒计时有声定时器。这个特定的Java Applet项目名为"TimeCount",它不仅实现了基本的倒计时功能,还特别加入了声音...
以下是关于Java倒计时的相关知识点: 1. **基本概念**: - **线程(Thread)**:倒计时通常需要在后台运行,不影响主线程的执行,因此涉及到多线程。Java中的Thread类或Runnable接口可以用来创建和管理线程。 - *...
1.以时/分/秒为单位设定倒计时范围。 2.在倒计时过程中可以停止。 3.设定的时间到时弹出窗口提示并播放音乐,可在提示窗口里选择是否停止音乐或者听完整首歌。 4.音乐可以自己换,但只支持.au格式的,替换文件夹中的...
从给定的文件信息来看,这段代码主要涉及的是使用Java Swing库来创建一个图形用户界面(GUI),用于显示倒计时功能。以下是对标题、描述、标签和部分内容中提到的知识点的详细解释: ### Java Swing库 Java Swing是...
java倒计时三种简单实现方式 Java中的倒计时功能是非常常见的需求,例如倒计时式的游戏、倒计时式的广告页等等。今天,小编将为大家介绍三种简单的Java倒计时实现方式,供大家参考和学习。 方式一:给定时长倒计时...
Java 倒计时三种实现方式代码实例 Java 倒计时是指在 Java 编程语言中实现倒计时功能的各种方法和技术。倒计时是指从当前时间到达预设时间的一种计时方式,常用于计时器、定时器、倒计时器等应用场景中。下面将...
【Java编写的倒计时程序】是一个典型的编程实践案例,主要展示了如何在Java环境中实现一个功能性的倒计时器。这个程序可能包含了基础的计时逻辑、用户界面以及可能的事件处理机制。以下是对该程序相关知识点的详细...
用java写了个简单的倒计时,也是刚学的,前台的东西接触不多
【倒计时器 Java】是基于Java编程语言开发的一个简单实用的小程序,它主要用于实现时间的倒计时功能。在编程领域,倒计时计时器是一个常见的应用场景,例如用于考试系统、活动启动预告或者定时任务等。这个程序对...
System.out.println("下班倒计时开始..."); timer.schedule(new MyTask(date),0,1000); } //ps:如有不懂请联系作者!解压后是两个java类,自己创建java项目,把两个类拷贝进去,修改以下包路径即可