为什么java.util.Date给我错误的时间?

Tah*_*ram 7 java date

System.out.println(new Date());

Thu Feb 23 04:57:57 ACT 2012
Run Code Online (Sandbox Code Playgroud)

我在main方法中运行它.我的系统当前时间是PKT.但它给了我ACT的时间.

任何的想法?如何获得正确的系统时间?

在此输入图像描述

Jon*_*eet 7

问题似乎与时区有关,而不是Date价值本身.因此,不要打印当前日期,而是使用类似的东西打印出当前时区:

import java.util.TimeZone ;

public class Test {
    public static void main(String[] args) throws Exception {
        TimeZone zone = TimeZone.getDefault();
        System.out.println(zone.getDisplayName());
        System.out.println(zone.getID());
    }
}
Run Code Online (Sandbox Code Playgroud)

例如,对我来说打印:

Greenwich Mean Time
Europe/London
Run Code Online (Sandbox Code Playgroud)

一旦你知道什么Java会把您的默认时区是更多的细节,你可以开始寻找为什么它认为.有什么关于你如何运行Java的非标准的?任何看起来像是不正确的时区的环境变量?

您可能还需要打印以下系统属性,这些属性在确定时区时使用:

user.timezone
user.country
java.home
Run Code Online (Sandbox Code Playgroud)

(获取默认时区之前将其打印出来- user.timezone如果之前未设置,则设置为获取它的一部分.)