gpt4 book ai didi

java - JSP 使用服务器时区显示服务器日期和时间

转载 作者:行者123 更新时间:2023-12-02 02:38:44 25 4
gpt4 key购买 nike

我在墨西哥有一台 RHEL6 Linux 服务器运行我的应用程序。服务器时区是 CDT。因此,当我在 Linux 命令行上发出“date”命令时,我得到了正确的日期和时间,比我晚了一个小时。 (我在东部夏令时间)。

但是,当我使用 java.util.date 对象并在 JSP 中显示当前服务器日期时,它会显示适合我的时区的正确日期和时间。

例如我使用:

<% ...
Date local = new Date();
out.write("'" + local + "'");
... %>

这会显示,比如说,

Tue Aug 22 14:39:13 EDT 2017

,我写这篇文章的日期和时间。但我需要显示

Tue Aug 22 13:39:13 CDT 2017

这是服务器的实际日期和时间。

我对 Java、JSP 有点陌生。所以我不确定如何按照我需要的方式获得输出。

谢谢

最佳答案

您的问题与许多其他问题重复,所以简单地说......

不要使用麻烦的旧版 date.time 类,这些类现已被 java.time 类取代。

Date 始终采用 UTC,但其 toString 方法动态应用 JVM 当前的默认时区。令人困惑。避免遗留类的众多原因之一。

始终指定您想要/预期的时区。切勿隐式依赖 JVM 的当前时区。因此,作为程序员,您永远不应该关心部署的服务器可能设置在哪个区域。该默认值可以在运行时随时更改,因此它是不可靠的。

切勿使用 3-4 个字母的伪时区,例如 CDT 或 EDT。它们不是实际的区域,它们不是标准化的,它们甚至不是唯一的! Real time zones命名为大陆/地区

ZonedDateTime.now(
ZoneId.of( "America/Mexico_City" )
).toString()

对于其他格式,请参阅DateTimeFormatter。请注意 ofLocalized... 方法。

如何获取用户想要的时区?您可以尝试通过网络浏览器获取默认偏移量。我记得浏览器只返回当前偏移量,而不是完整的时区。但最终唯一确定的方法是明确询问用户。

关于java - JSP 使用服务器时区显示服务器日期和时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45824669/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com