问题似乎与时区有关,而不是日期值本身.因此,不要打印出当前日期,而是使用类似的东西打印出当前时区:
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());
}
}
例如,对我来说打印:
Greenwich Mean Time
Europe/London
一旦你了解了Java认为你的默认时区是什么的更多细节,你就可以开始寻找它的想法了.有什么关于你如何运行Java的非标准的?任何看起来像是不正确的时区的环境变量?
您可能还需要打印以下系统属性,这些属性在确定时区时使用:
user.timezone
user.country
java.home
(在获取默认时区之前将其打印出来 – 如果之前未设置,则将user.timezone设置为获取它的一部分.)