Grails将日期时间保存为UTC时间,但将其作为本地服务器时间读取?

Dan*_* T. 14 java grails timezone datetime grails-2.0

我的Grails应用程序中有以下行将默认时区设置为UTC:

TimeZone.setDefault(TimeZone.getTimeZone("UTC"))
Run Code Online (Sandbox Code Playgroud)

我有一个Audit带有dateCreated字段的实体:

class Audit {
    Date dateCreated
    String message
}
Run Code Online (Sandbox Code Playgroud)

然后我创建并保存它的一个实例:

def audit = new Audit(message: "Testing audit message")
Run Code Online (Sandbox Code Playgroud)

这会将其作为UTC时间正确保存到我的数据库中.但是,当我尝试阅读它时:

audit = Audit.get(1)
Run Code Online (Sandbox Code Playgroud)

时间戳将作为本地时间回读.因此,如果我的时区是+1 UTC并且当前本地时间是BST的12:34:56,那么将保存到数据库的是11:34:56,但是当我读回它时,它变为11:34:56 BST.有没有人知道如何解决这个问题,以便Grails将时间戳读回UTC并相应地转换它?

Sud*_*r N 19

Bootstrap.groovy

 TimeZone.setDefault(TimeZone.getTimeZone("UTC"))
Run Code Online (Sandbox Code Playgroud)

JAVA_OPTS.

-Duser.timezone=UTC
Run Code Online (Sandbox Code Playgroud)

来源:这个帖子