我有一个名为我从 MySQL InnoDB 数据库获得的startDate
类型的字段:TIMESTAMP
SELECT startDate FROM jn.all WHERE id IN(115)
=> 2012-07-28 00:00:00
在Java中我这样做:
java.util.Date d = resultSet.getDate("startDate");
SimpleDateFormat tsmpFormatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
tsmpFormatter.setTimeZone(TimeZone.getTimeZone("UTC"));
System.out.println(tsmpFormatter.format(d));
我得到:
=>2012-07-28 04:00:00
从 UTC 到 EST 有 4 个小时。数据库时间为 UTC。
SELECT now();
=> 2013-07-29 21:46:26
虽然我目前的 EST 时间是 17:46:26
即使我到处使用 UTC,为什么我会得到这 4 小时的差异?谢谢!
编辑:
我可能发现了这个问题。
http://dev.mysql.com/doc/refman/5.1/en/datetime.html
MySQL converts TIMESTAMP values from the current time zone to UTC for storage, and back from UTC to the current time zone for retrieval. (This does not occur for other types such as DATETIME.)
但这是什么current time zone
?服务器应该是 UTC。