【问题标题】:Difference of time between server and database in Grails 4.0.3Grails 4.0.3中服务器和数据库之间的时间差异
【发布时间】:2022-08-19 06:40:17
【问题描述】:

我开发了一个 Grails 4.0.3 Rest API 来向系统用户发送通知。

当我在数据库中保存一条消息时,我不知道为什么,但它从当前日期增加了三个小时。一开始我以为是服务器的时间,但是当我看到它时,我注意到服务器的时间是正确的。

现在在巴西的时间是 2022-08-16 12:08:54.710 并且服务器是正确的。但是在数据库中,它保存了 2022-08-16 14:55:54.710。

下面的代码保存了一条消息:

def message = new Message(userId: springSecurityService?.principal?.id,
                                        author: jsonObject.get(\'author\'),
                                        partId: params.partId,
                                        title: jsonObject.get(\'title\'),
                                        text: jsonObject.get(\'text\'),
                                        createdOn: new Date()).save(flush: true, failOnError: true)

谁能帮我解决这个问题?

谢谢。

  • 您使用的是什么数据库,它配置为哪个时区?
  • 嗨丹尼尔,我正在使用 MS SQL Server,但我认为问题不存在,因为当我在本地运行应用程序时,它按预期工作。在服务器中,小时是正确的,但是当我解散应用程序时,它会增加 3 小时到它应该是正确的小时。
  • [root@DMZAPL03 ~]# timedatectl 当地时间:星期四 2022-08-18 10:04:43 -03 世界时间:星期四 2022-08-18 13:04:43 UTC RTC 时间:星期四 2022-08-18 13: 04:42 时区:America/Sao_Paulo (-03, -0300) 启用 NTP:是 NTP 同步:是 本地 TZ 中的 RTC:没有 DST 活动:n/a

标签: date grails time


【解决方案1】:

我在 BootStrap.groovy 中以这种方式解决了这个问题

System.setProperty("user.timezone", "GMT-03")
TimeZone.setDefault(TimeZone.getTimeZone("America/Sao_Paulo"))

【讨论】:

    猜你喜欢
    • 2016-05-12
    • 1970-01-01
    • 1970-01-01
    • 2010-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-24
    • 1970-01-01
    相关资源
    最近更新 更多