grails System.currentTimeMillis()与System-Date不同

时间:2014-06-02 16:25:50

标签: date grails system

我在Tomcat上使用Grails运行centOs 当我在ssh remote shell中输入date

打印

Mo 2. Jun 18:18:57 CEST 2014

在App中我尝试了以下代码行

answer.insertDate = new Date(System.currentTimeMillis())

返回两小时前的日期

16:18:57

所以任何人都可以解释我如何获得正确的系统时间?

感谢

2 个答案:

答案 0 :(得分:1)

CEST比UTC提前2小时。

我相信当你从shell运行时它会使用你的系统时区(CEST),但是当你运行应用程序(默认情况下编程为使用UTC)时会落后2小时。

如果您希望在应用中使用CEST timeZone,请将默认时区(在BootStrap.groovy中)设置为CEST,如下所示

TimeZone.setDefault( TimeZone.getTimeZone( 'Europe/Brussels' ) )

另请注意,上面更改了应用程序的timeZone(您会看到带有CEST时间戳的日志),因此请明智地选择此设置。如果应用程序期望UTC是默认的timeZone,那么您可以坚持使用应用程序并且不要更改默认的timeZone。 :)

答案 1 :(得分:1)

我想我们首先必须定义“系统时间”。 date命令返回根据您的时区调整的语言环境日期,并根据您的语言进行格式化。 System.currentTimeMillis()返回纪元或UTC时间而不调整时区等。