我有一个简单的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
。使用其他日期格式可能总是会出现时间错误。
您可以阅读本文来学习ZonedDateTime
与LocalDateTime
:https://www.baeldung.com/java-zoneddatetime-offsetdatetime