尝试在循环中更新日期和时间

时间:2015-12-25 22:15:54

标签: java loops date time

我想同时打印和更新日期和时间。以下代码仅花费一次时间并打印相同的时间40次。如何在打印时更新时间?

public class Dandm {
    public static void main(String args[]) {
        DateFormat df = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
        Date date = new Date();
        String time = df.format(date);
        int i;
        for (i = 40; i > 0; i--) {
            System.out.println(date);
            try {
                Thread.sleep(500);
            } catch (InterruptedException e){}
        }
    }
}

2 个答案:

答案 0 :(得分:4)

System.out.println(date);替换为System.out.println(new Date());

问题是,当您执行Date date = new Date();时,date值不会在循环中发生变化。您每次都需要一个新日期,因此您应该每次都创建一个new Date()对象。

根据评论进行编辑(仅将时间作为字符串获取):

SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");  
for(i = 40; i > 0; i--){
    Date date = new Date();
    String str = sdf.format(date);
    System.out.println(str);

    try{Thread.sleep(500);}
    catch (InterruptedException e){}
}

答案 1 :(得分:2)

您只创建一次对象,一旦创建了对象,它就会获取其属性:

Date date = new Date();

如果你想更新时间并打印它,那么你要么在循环中创建对象,如下所示:

for (i = 40; i > 0; i--) {
    Date date = new Date();
    System.out.println(date);
    try {
        Thread.sleep(500);
    } catch (InterruptedException e){}
}

或者只是在打印功能中创建一个匿名的Date对象。

for (i = 40; i > 0; i--) {
    System.out.println(new Date());
    try {
        Thread.sleep(500);
    } catch (InterruptedException e){}
}