【发布时间】:2013-05-31 00:23:50
【问题描述】:
以下代码:
import java.sql.Date;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
public class FooMain {
private static final DateFormat DF = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm'Z'");
public static void main(String args[]) {
System.out.println(DF.format(new Date(0)));
}
}
打印出来:
1970-01-01T01:00Z
不应该是1970-01-01T00:00Z吗?我知道 Unix 纪元时间总是明确的,我们不必担心时区,但这是我的时区,以防万一:
$ cat /etc/timezone
Europe/Madrid
【问题讨论】:
-
来自
java.util.Date的文档:“[...]表示自 [...] 1970 年 1 月 1 日 00:00:00 GMT。”并且西班牙的时区是 GMT+1,所以输出是正确的。 -
另外,不要将
java.sql.Date与java.util.Date混淆。前者扩展了后者,并且应该只包含有关日期的信息。