我在Tomcat上使用Grails运行centOs
当我在ssh remote shell中输入date
时
打印
Mo 2. Jun 18:18:57 CEST 2014
answer.insertDate = new Date(System.currentTimeMillis())
返回两小时前的日期
16:18:57
所以任何人都可以解释我如何获得正确的系统时间?
感谢
答案 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时间而不调整时区等。