Java SpringBoot应用程序获得不同的系统时间
我有一个简单的SpringBoot Java应用程序。在日志中,使用Java SpringBoot应用程序获得不同的系统时间,java,spring,ubuntu,timezone,Java,Spring,Ubuntu,Timezone,我有一个简单的SpringBoot Java应用程序。在日志中,使用LocalDateTime.now()are显示错误的时间戳,比系统(Ubuntu)默认值多1小时。 在日志记录时间戳中,它是: 2020-11-26 14:46:00584信息[scheduling-1]… 还有打印LocalDateTime。 但是,系统时间不同: $ date qui nov 26 13:50:13 -03 2020 那么,如何设置应用程序以从系统中获取正确的时间呢?在Java中,为时间指定明确的时区。例
LocalDateTime.now()
are显示错误的时间戳,比系统(Ubuntu)默认值多1小时。
在日志记录时间戳中,它是:
2020-11-26 14:46:00584信息[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);
my Java 11上的输出示例:
2020-11-27T03:13:50.944898-02:00[美国/圣保罗]
在Java中,为时间指定显式时区。例如:
ZoneId desiredTimeZone = ZoneId.of("America/Sao_Paulo");
ZonedDateTime logTime = ZonedDateTime.now(desiredTimeZone);
System.out.println(logTime);
my Java 11上的输出示例:
2020-11-27T03:13:50.944898-02:00[美国/圣保罗]
您应该在项目中使用
ZoneDateTime
。使用其他日期格式可能总是会出现时间错误
您可以阅读此内容了解
ZonedDateTime
vsLocalDateTime
:https://www.baeldung.com/java-zoneddatetime-offsetdatetime
您应该在项目中使用ZoneDateTime
。使用其他日期格式可能总是会出现时间错误
您可以阅读此内容了解
ZonedDateTime
vsLocalDateTime
:https://www.baeldung.com/java-zoneddatetime-offsetdatetime
我同意你的说法LocalDateTime
在这里使用的类不正确,应该很少使用。我不认为仅仅换班就能解决OP的问题。我同意你的说法LocalDateTime
在这里使用的类不正确,应该很少使用。我不认为仅仅改变班级就能解决OP的问题。