刚学没事搞了个倒计时的网上看了这个 结果怎么算都多了30天求解
package classic3IOAndThread;
import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
import javax.swing.JFrame;
import javax.swing.JLabel;
//Graduate time from java school: 2010-8-19
public class CountDown {
long longTime;
long currentTime;
long distTime;
long day, hour, minutes, seconds;
public CountDown() {
CDown();
}
public void CDown() {
Timer timer = new Timer();
JFrame jf = new JFrame();
final JLabel jl = new JLabel();
jf.add(jl);
jf.setVisible(true);
jf.setSize(400, 150);
jf.getDefaultCloseOperation();
timer.schedule(new TimerTask() {
@Override
public void run() {
Calendar cal = Calendar.getInstance();
cal.set(2010, 7, 19, 18, 0, 0);
// 返回历元到指定时间的毫秒数。
longTime = cal.getTimeInMillis();
// 返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。
currentTime = new Date().getTime();
distTime = longTime - currentTime;
day = ((distTime / 1000) / (3600 * 24));
hour = ((distTime / 1000) - day * 86400) / 3600;
minutes = ((distTime / 1000) - day * 86400 - hour * 3600) / 60;
seconds = (distTime / 1000) - day * 86400 - hour * 3600
- minutes * 60;
jl.setText(" 达内SD1003班 毕业倒计时" + day + " 天 " + hour + "小时 :" + minutes
+ "分钟 :" + seconds + "秒");
}
}, 0, 1000);
}
public static void main(String[] args) {
new CountDown();
}
}
运行结果: 达内SD1003班 毕业倒计时 102天 20小时:10分钟:10秒。
提示:显示结果每秒自动刷性。
package classic3IOAndThread;
import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
import javax.swing.JFrame;
import javax.swing.JLabel;
//Graduate time from java school: 2010-8-19
public class CountDown {
long longTime;
long currentTime;
long distTime;
long day, hour, minutes, seconds;
public CountDown() {
CDown();
}
public void CDown() {
Timer timer = new Timer();
JFrame jf = new JFrame();
final JLabel jl = new JLabel();
jf.add(jl);
jf.setVisible(true);
jf.setSize(400, 150);
jf.getDefaultCloseOperation();
timer.schedule(new TimerTask() {
@Override
public void run() {
Calendar cal = Calendar.getInstance();
cal.set(2010, 7, 19, 18, 0, 0);
// 返回历元到指定时间的毫秒数。
longTime = cal.getTimeInMillis();
// 返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。
currentTime = new Date().getTime();
distTime = longTime - currentTime;
day = ((distTime / 1000) / (3600 * 24));
hour = ((distTime / 1000) - day * 86400) / 3600;
minutes = ((distTime / 1000) - day * 86400 - hour * 3600) / 60;
seconds = (distTime / 1000) - day * 86400 - hour * 3600
- minutes * 60;
jl.setText(" 达内SD1003班 毕业倒计时" + day + " 天 " + hour + "小时 :" + minutes
+ "分钟 :" + seconds + "秒");
}
}, 0, 1000);
}
public static void main(String[] args) {
new CountDown();
}
}
运行结果: 达内SD1003班 毕业倒计时 102天 20小时:10分钟:10秒。
提示:显示结果每秒自动刷性。
解决方案 »
- java io的问题
- java socket 问题
- Thread中的start()方法实现
- 引用Date类的问题
- 请高手指点一下. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
- 怎样读取一个300多M的文本文件??急
- 求助,如何根据个String造出相应的java.util.Date对象
- 100分请大家推荐一下自己学JAVA时认为比较好的书籍跟学习方法!
- 300分的问题?帮我查一下问题出在哪里,高分重谢!!
- 为什么再JAVA程序中输入 汉字会报错
- java io 的问题,请高手指点
- java 题目 编写一个代表地址的Address类,地址信息由国家,省份,城市,街道,邮编组成,并且可以返回完整的地址信息!并用测试类 进行测试!
import java.util.Calendar;
import java.util.GregorianCalendar;import javax.swing.JFrame;
import javax.swing.JLabel;
public class TimeFrame {
private JFrame jf;
private JLabel label1;
private JLabel label2;
public TimeFrame(){
jf=new JFrame("倒计时牌");
label1=new JLabel("距2012世界末日还有:");
label2=new JLabel("");
jf.add(label1,BorderLayout.NORTH);
jf.add(label2,BorderLayout.CENTER);
Thread t=new RefreshTimeThread(new GregorianCalendar(2012,Calendar.DECEMBER,21,0,0,0));
t.start();
}
public void showMe(){
jf.setBounds(200,200,300,150);
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new TimeFrame().showMe();
}
class RefreshTimeThread extends Thread{
private Calendar targetTime;
public RefreshTimeThread(Calendar targetTime){
this.targetTime =targetTime;
}
public void run(){
while(true){
Calendar todayTime=new GregorianCalendar();
long seconds=(targetTime.getTimeInMillis()-todayTime.getTimeInMillis())/1000;
if(seconds<=0){
label2.setText("时间到!");
break;
}
int day=(int)(seconds/(24*60*60));
int hour=(int)(seconds/(60*60)%24);
int min=(int)(seconds/60%60);
int sec=(int)(seconds%60);
String str=day+"天 "+hour+"时 "+min+"分 "+sec+"秒 ";
label2.setText(str);
try{
Thread.sleep(1000);
}catch(InterruptedException e){
e.printStackTrace();
}
}
}
}
}
你可以看下这段代码,或许对你有帮助~~
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Calendar;
import java.util.Date;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.Timer;
import static java.util.concurrent.TimeUnit.*;//Graduate time from java school: 2010-8-19
public class CountDown {
private CountDown() { } public static void main(String[] args) {
java.awt.EventQueue.invokeLater(new java.lang.Runnable(){
@Override public void run(){
final JFrame frame = new JFrame("毕业倒计时");
final JLabel display = new JLabel("");
final Font font = display.getFont();
display.setFont(font.deriveFont(Font.BOLD, 24.F));
display.setVerticalAlignment(JLabel.CENTER);
display.setHorizontalAlignment(JLabel.CENTER);
frame.add(display); frame.setSize(700, 150);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final Timer timer = new Timer(1000,new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
Calendar calendar = Calendar.getInstance();
long now = calendar.getTimeInMillis(); calendar.set(2012, 6, 19, 18, 0, 0);
long longTime = calendar.getTimeInMillis(); long distTime = longTime - now;
long days = MILLISECONDS.toDays(distTime);
long hours = MILLISECONDS.toHours(distTime - DAYS.toMillis(days));
long minutes = MILLISECONDS.toMinutes(distTime - DAYS.toMillis(days)
- HOURS.toMillis(hours));
long seconds = MILLISECONDS.toSeconds(distTime - DAYS.toMillis(days)
- HOURS.toMillis(hours)
- MINUTES.toMillis(minutes));
display.setText(String.format("达内SD1203班 毕业倒计时 %d 天 %d 小时 %d 分钟 %d 秒",
days,hours,minutes,seconds));
}
});
timer.start();
frame.setVisible(true);
}
});
}
}