tomcat - 服务器中显示的日期与我预期的不同

标签 tomcat grails groovy simpledateformat

我尝试在我的网络应用程序中显示通过 HTTP 请求发送的日期。

在语言环境中,发送的日期显示正确,但是当 webapp 部署在服务器上时,显示的日期对应于服务器上的当前日期,而不是我发送的日期。

http 请求示例: 发送的 HTTP 请求: http://...?persoDate="03/10/2013 11:29:55"

这是我的代码:

def initDate = new SimpleDateFormat("d/M/yyyy H:m:s").parse(params["persoDate"].replaceAll(/"/, ''))

MyInstance.addToAbList(new BOSSession(setDateSession:initDate))

MyInstance.save(flush: true)

最佳答案

您错过了该日期/时间预计所在的时区。在您的本地计算机上,这可能是您所期望的 - 无论如何它是您的计算机并且很可能显示您当前所在的时间。但是,服务器可能位于 UTC 或任何其他时区,并将日期解释为相对于该时区的日期。现在,如果您解析它,然后将其转换为您的本地时区,您将最多延迟 24 小时,具体取决于您的本地计算机和服务器在时区方面的“距离”。

根据您的意见:

java 类型 Date 总是没有时区,您需要通过 Calendar 才能进行时区处理。这是在存储或显示日期期间可能发生的情况。首先,您需要找出问题出在哪里:即在解析中,在存储中(实际上最终出现在您的数据库中的内容)或显示已写入数据库的值。此外,您可能需要将预期的时区显式保存到数据库中,以便稍后在显示值时重现它。

测试步骤:

  • 您本地计算机的时区是多少?服务器的时区是什么?数据库服务器的?
  • 数据库中存储了什么?它包含时区吗?
  • 你从数据库中读取了什么?
  • 向用户显示什么?根据您所做的格式化,这也可能会进行时区计算。

一旦您发现哪些不同的步骤需要更正,您就有了深入研究的要点。我无法从这里判断您的问题出在哪个步骤上,因此没有代码示例...(另外,我已经很长时间没有锻炼我的常规肌肉了)抱歉。

如果您在网络应用程序中,请确保您知道用户实际期望的时区。如果您只需要处理一个时区(并且额外额外确保不会有另一个时区)只需将您的服务器设置为您想要处理的时区并且您的所有用户都在. 这个假设迟早会被打破,但现在你已经准备好了 :(

关于tomcat - 服务器中显示的日期与我预期的不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19177480/

相关文章:

Galileo 上的 eclipse tomcat 配置

java - 在 Hibernate 中映射 oracle 的 UserType 列

java - 泛型上的 Groovy 映射和 Java 映射

java - Tomcat 安装在远程服务器上。如何在本地浏览器上查看

mysql - 为什么在将 Grails WAR 部署到 Tomcat 时出现 H2 错误

mysql - 在 Grails war 中几个小时后与数据库的连接丢失

java - 如果渲染保存json成功,如何刷新页面true

grails - 是否可以在Grails中记录MarkupTemplateEngine的输出?

java - 如何漂亮地打印 HttpServletRequest 和 HttpServletResponse

grails - 为什么我在 grails g :link tag? 创建的链接末尾看到双星号