Java SpringBoot应用程序获得不同的系统时间



我有一个简单的SpringBoot Java应用程序。在日志记录和使用LocalDateTime.now()都显示了错误的时间戳,比系统(Ubuntu(默认值多了1个小时。在日志时间戳中是:

2020-11-26 14:46:00,584 INFO [scheduling-1]....

并开始打印LocalDateTime。但是,系统时间不同:

$ date
qui nov 26 13:50:13 -03 2020

那么,我如何设置应用程序以从系统中获得正确的时间呢?

在Java中,为时间指定显式时区。例如:

ZoneId desiredTimeZone = ZoneId.of("America/Sao_Paulo");
ZonedDateTime logTime = ZonedDateTime.now(desiredTimeZone);
System.out.println(logTime);

我的Java 11:上的示例输出

2020-11-27T03:13:50.944898-02:00[美国/圣保罗]

您应该在项目中使用ZonedDateTime。使用其他日期格式可能总是会出现时间错误。

您可以阅读本文来学习ZonedDateTimeLocalDateTime:https://www.baeldung.com/java-zoneddatetime-offsetdatetime

最新更新