控制台中的时间刷新

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

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));
    }
}
fjqqq123 回答:控制台中的时间刷新

控制台的行为有所不同,因此恐怕没有通用的解决方案。

我尝试过:

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

当我在Eclipse中运行它时,它会像这样在Eclipse控制台中在彼此之间打印行:

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

Screen shot from Eclipse console

但是,当我在Mac上的“终端”窗口中运行它时,它停留在同一行上并不断覆盖它:

Screen shot from Terminal

\r字符是回车符。从理论上讲,它应该回到同一行的开头。也许它之所以不在Eclipse中,是因为他们认为我想使用控制台窗口进行调试,因此,如果我可以看到所有输出,则可以更好地使用它,因此他们不想覆盖任何输出。只是猜测。

有更优雅,更准确的方法可以使每秒发生的事情。查看ScheduledExecutorService.scheduleAtFixedRate

PS这两种截屏的格式略有不同,在日期和时间之间包括了终端窗口um(“ at”)。区别来自不同的Java版本。在Eclipse中,我在终端窗口Java 11中使用了Java8。问题在这个问题中:JDK dateformatter parsing DayOfWeek in German locale,java8 vs java9

本文链接:https://www.f2er.com/3101678.html

大家都在问