linux中的Java日期问题

linux中的Java日期问题,java,linux,Java,Linux,好的,这里有一个非常奇怪的问题,通过这里或谷歌搜索似乎找不到太多关于它的信息 我有一个机器人在IRC频道上运行。最初,我在我的家用电脑(Windows)上运行它,它运行起来没有任何问题。 现在我把它移到了VPS(Linux)上,发现它没有正确地报告日期 VPS的日期设置正确: bot@vps:~/bot$ date Fri Jun 24 13:05:23 WST 2011 机器人有两个时间功能,一个简单地返回时间,另一个是提醒系统。 两者都使用System.currentTimeMillis(

好的,这里有一个非常奇怪的问题,通过这里或谷歌搜索似乎找不到太多关于它的信息

我有一个机器人在IRC频道上运行。最初,我在我的家用电脑(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
或:

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


编辑:强制设置Java时区,现在报告正确,因此这似乎与JVM有关。这里的问题是JVM没有成功检测到您的系统时区

我以前听说过一点,但我认为它们都是固定的。您使用的是什么java版本。对这个问题有详细的解释

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

  • Export TZ变量:Export TZ=“美国/东部”
  • TimeZone.setDefault(TimeZone.getTimeZone(“美国/东部”))
  • java-Duser.timezone=US/Eastern类名

  • 在Linux或Unix上运行JVM时,这实际上相当典型。System.currentTimeMillis()没有问题,需要正确设置时区的是格式化代码。看苏拉杰的答案,完全正确。某些JVM在某些Linux发行版上不会选择默认时区。我更喜欢为服务器端Java应用程序显式地指定它(方法#1)。
    [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