回 帖 发 新 帖 刷新版面

主题:[讨论]大哥大姐们进来帮我看下这代码怎么执行不正确啊?

import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
public class Time2012  extends Thread{

    /**
     * 功能描述:使用线程 计算2012.1.1的秒数到系统当前的秒数的时间差,并隔1秒打印出来
     * @param args
     */
    public void run(){
        //方法返回一个 Calendar 对象的实例
        Calendar cal2012 = Calendar.getInstance();
        //设置为2012年1月1日
        cal2012.set(Calendar.YEAR, 2012);
        cal2012.set(Calendar.MONTH, 1);
        cal2012.set(Calendar.DATE, 1);
        //显示系统的当前秒数 (是1970.1.1到系统当前的秒数)  Ⅰ
        System.out.println(System.currentTimeMillis()/1000);
        //显示1970.1.1到2012.1.1的秒数                     Ⅱ
        System.out.println(cal2012.getTimeInMillis()/1000);
        //将 Ⅱ - Ⅰ 的值赋给lo
        long lo = (cal2012.getTimeInMillis() - System.currentTimeMillis()) / 1000;
        //显示 Ⅱ - Ⅰ 的值 (2012.1.1 - 系统当前秒数的值)
        System.out.println(lo);
        while(lo >= 0){
            lo--;
            System.out.println("离2012年1月1日还有"+lo+"秒。");
            try {
                //休眠 1 秒
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        System.out.println("离2012年1月1日时间到!");
    }
    
    public static void main(String[] args) {
        Time2012 t = new Time2012();
        //启动线程
        t.start();
    }
}

就是系统当前秒数到2012.1.1的秒数还差多少秒.
但是运行第一次和以后运行时,每次的起始秒数都相同了,这个怎么解决啊?

回复列表 (共2个回复)

沙发

import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
public class Time2012  extends Thread{

    /**
     * 功能描述:使用线程 计算2012.1.1的秒数到系统当前的秒数的时间差,并隔1秒打印出来
     * @param args
     */
    public void run(){
        //方法返回一个 Calendar 对象的实例
        Calendar cal2012 = Calendar.getInstance();
        cal2012.clear();
        //设置为2012年1月1日
        cal2012.set(Calendar.YEAR, 2012);
        cal2012.set(Calendar.MONTH, 1);
        cal2012.set(Calendar.DATE, 1);
        //显示系统的当前秒数 (是1970.1.1到系统当前的秒数)  Ⅰ
        System.out.println(System.currentTimeMillis()/1000);
        //显示1970.1.1到2012.1.1的秒数                     Ⅱ
        System.out.println(cal2012.getTimeInMillis()/1000);
        //将 Ⅱ - Ⅰ 的值赋给lo
        long lo = (cal2012.getTimeInMillis() - System.currentTimeMillis()) / 1000;
        //显示 Ⅱ - Ⅰ 的值 (2012.1.1 - 系统当前秒数的值)
        
        System.out.println(lo);
        while(lo >= 0){
            lo--;
            System.out.println("离2012年1月1日还有"+lo+"秒。");
            try {
                //休眠 1 秒
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        System.out.println("离2012年1月1日时间到!");
    }
    
    public static void main(String[] args) {
        Time2012 t = new Time2012();
        //启动线程
        t.start();
    }
}
这样可以了

板凳

谢谢了.

我来回复

您尚未登录,请登录后再回复。点此登录或注册