java.sql.Timestamp #valueOf结果取决于默认时区

时间:2016-10-20 15:08:40

标签: java timezone timestamp

我做了实验

for (String tz: TimeZone.getAvailableIDs()) {
    TimeZone.setDefault(TimeZone.getTimeZone(tz));
    timestamp = Timestamp.valueOf("1970-01-01 00:00:00.000");
    System.out.println(tz + " - " + timestamp.getTime());
}

意外地每个时区的结果都不同。这背后的逻辑是什么?一直认为时间戳是时区独立的。

1 个答案:

答案 0 :(得分:0)

因为Timestamp使用UTC TimeZone,如果你改变Timezone它会有所不同,即在伦敦时是1970-01-01 00:00:00.000(GMT + 1)在西班牙加那利群岛是1969-12-31 23: 00:00.000(GMT)

*编辑:在大多数情况下,UTC被视为可与GMT互换