【问题标题】:Time refresh in the console控制台中的时间刷新
【发布时间】:2020-03-10 13:32:54
【问题描述】:

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

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

【问题讨论】:

  • 请按原样放置您的代码,而不是图像!
  • 包测试;导入 java.util.*;导入java.text.*;公共类 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("数据:" + ft.format(dNow)); } }
  • 我建议你不要使用SimpleDateFormatDate。这些类设计不佳且早已过时,尤其是前者,尤其是出了名的麻烦。而是使用ZonedDateTimeLocalDateTime 以及在任何情况下DateTimeFormatter,均来自java.time, the modern Java date and time API
  • 那么您是否希望程序用日期和时间连续覆盖先前打印的行?

标签: java time console refresh


【解决方案1】:

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

我试过这个:

    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

但是当我从我的 Mac 上的终端窗口运行它时,它停留在同一行并且一直覆盖它:

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

有更优雅、更准确的方法可以让每一秒都发生一些事情。查看ScheduledExecutorService.scheduleAtFixedRate

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 2010-11-22
    • 1970-01-01
    • 2016-11-07
    相关资源
    最近更新 更多