【问题标题】:Trying to update Date and Time in a loop尝试循环更新日期和时间
【发布时间】:2015-12-25 22:15:54
【问题描述】:

我想同时打印和更新日期和时间。下面的代码只需要时间一次,并打印相同的时间 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){}
        }
    }
}

【问题讨论】:

  • 日期只是一个时间点的表示,所以它不会改变

标签: java loops date time


【解决方案1】:

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

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

根据 cmets 进行编辑(将日期作为只有时间的字符串获取):

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){}
}

【讨论】:

  • @Hooga 您可以点击答案旁边的勾号将其标记为答案。
  • 如何获取字符串中的时间?我想这样做,如果时间 = 00 或一个新的小时,就会发生另一个动作。
  • @Hooga 如果您只想要字符串中的日期,那么它有一个您可以使用的toString() 方法。 String s = date.toString()
  • 如何让 SimpleDateFormat 只打印时间?
  • 在循环中执行Date date = new Date();,然后执行SimpleDateFormat sdf = new SimpleDateFormat("HH:mm"); String str = sdf.format(date);之类的操作
【解决方案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){}
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-24
    • 1970-01-01
    • 2014-06-24
    相关资源
    最近更新 更多