Linux中的Java日期问题

时间:2011-06-24 05:24:58

标签: java linux

好的,这里非常奇怪的问题,似乎无法通过这里或谷歌搜索到它。

我有一个在IRC频道上运行的机器人。最初,我从家用PC(Windows)运行它,它没有任何问题。 现在我已将其移至VPS(Linux),并发现它没有正确报告日期。

VPS的日期设置正确:

bot@vps:~/bot$ date
Fri Jun 24 13:05:23 WST 2011

机器人有两个时间功能,一个只返回时间,一个是提醒系统。 两者都使用System.currentTimeMillis()。两者都报错时间;

[13:10:00] ( mynick) !time
[13:10:00] ( botnick) mynick: The time is now Thu Jun 23 21:10:00
                 GMT-08:00 2011

或:

[13:20:19] ( mynick) remind me in 1 minute test
[13:20:19] ( botnick) bmynick: Okay, I'll remind you about that on Thu Jun
                 23 21:21:19 GMT-08:00 2011

所以它似乎发现系统时间为GMT-8,但我不明白为什么?有什么建议吗?

编辑:强制Java时区,它现在正确报告,所以它似乎与JVM有关

1 个答案:

答案 0 :(得分:2)

此处的问题是JVM未成功检测到您的系统时区。

我之前听过一些关于此的内容,但认为它们都是固定的。你正在使用什么java版本。有关此问题的详细说明here

要手动设置时区,您可以尝试以下选项:

  1. 导出TZ变量:export TZ =“US / Eastern”
  2. TimeZone.setDefault(TimeZone.getTimeZone( “US /东部”))
  3. java -Duser.timezone = US / Eastern CLASS_NAME