Java 控制台中的时间刷新

Java 控制台中的时间刷新,java,time,console,refresh,Java,Time,Console,Refresh,我试图对日期和时间进行编程,使其与当前日期相对应,但在控制台中找不到解决方案,只显示上次运行的日期。这是我的密码: public class DateDemo { public static void main(String args[]) { Date dNow = new Date(); SimpleDateFormat ft = new SimpleDateFormat("E dd.MM.yyyy 'um' HH:mm:ss ");

我试图对日期和时间进行编程,使其与当前日期相对应,但在控制台中找不到解决方案,只显示上次运行的日期。这是我的密码:

public class DateDemo {

    public static void main(String args[]) {
        Date dNow = new Date();
        SimpleDateFormat ft = new SimpleDateFormat("E dd.MM.yyyy 'um' HH:mm:ss ");
        System.out.println("Datum: " + ft.format(dNow));
    }
}

控制台的行为不同,所以恐怕没有任何通用的解决方案

我试过这个:

    DateTimeFormatter formatter
            = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.LONG)
                    .withLocale(Locale.GERMAN);
    ZoneId timeZoneId = ZoneId.of("Europe/Zurich");
    int totalIterations = Math.toIntExact(TimeUnit.HOURS.toSeconds(2));
    for (int sec = 0; sec < totalIterations; sec++) {
        System.out.print(ZonedDateTime.now(timeZoneId).format(formatter) + '\r');
        TimeUnit.SECONDS.sleep(1);
    }

但当我在Mac电脑的终端窗口中运行它时,它保持在同一行,只是不断覆盖它:

\r
字符是回车符。理论上,它应该回到同一行的开头。也许在Eclipse中没有这样做的原因是他们认为我想使用控制台窗口进行调试,因此如果我能看到所有输出,就更好了,所以他们不想覆盖任何输出。只是猜测而已

有更优雅、更准确的方法让事情每秒都发生。调查


PS两个屏幕截图中的格式略有不同,在终端窗口中,日期和时间之间包括
um
(“at”)。差异来自不同的Java版本。在Eclipse中,我在终端窗口Java11中使用了Java8。故事发生在这个问题上:。

请按原样而不是图像放置代码!包装试验;导入java.util.*;导入java.text.*;public类DateDemo{public static void main(String args[]){Date dNow=new Date();simpledteformat ft=new simpledteformat(“E dd.MM.yyyy'um'HH:MM:ss”);System.out.println(“Datum:+ft.format(dNow));}}我建议不要使用
simpledteformat
Date
。这些类设计得很糟糕,而且早已过时,其中前者尤其令人讨厌。相反,请使用
ZonedDateTime
LocalDateTime
,并且在任何情况下都可以使用
DateTimeFormatter
。因此,您是否希望程序连续使用日期和时间覆盖以前打印的行?
16. November 2019 07:37:32 MEZ
16. November 2019 07:37:33 MEZ
16. November 2019 07:37:34 MEZ
16. November 2019 07:37:35 MEZ