我想同时打印和更新日期和时间。以下代码仅花费一次时间并打印相同的时间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){}
}
}
}
答案 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){}
}