我尝试在我的webapp中显示通过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)
答案 0 :(得分:1)
您错过了这个日期/时间所在的时区。在您的本地计算机上,它可能是您所期望的 - 无论如何它都是您的计算机,并且很可能显示您当前的时间。但是,服务器可能是UTC或任何其他时区,并将日期解释为相对于该时区。现在,如果您解析它,然后将其转换为您当地的时区,您将最多关闭24小时,具体取决于您的本地计算机和服务器在时区方面的“距离”。
发表评论:
java类型的日期总是没有时区,你需要通过日历来进行时区处理。这是在存储或显示日期期间可能发生的情况。首先,您需要找出问题所在:即在解析,存储(实际上最终在数据库中)或显示已编写的值时,执行数据库。此外,您可能需要将预期的时区显式保存到数据库,以便在以后显示值时再现它。
测试步骤:
一旦你发现哪些不同的步骤需要进行修正,你就有必要深入研究。我不能从这里看出你的问题是哪些步骤,因此没有代码样本...(另外,我很长时间没有运用我的常规肌肉)抱歉。
如果您在Web应用程序中,请确保您知道用户实际期望的时区。如果您只需要处理一个时区(并且额外的额外确保不会有另一个时区),只需将您的服务器设置为您想要处理的时区,并且您的所有用户都在这个假设迟早会破裂,但现在你已经设定了:(