下面的代码:
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
最佳答案
new Date(0)
确实对应于 January 1, 1970, 00:00:00 GMT
。问题是,默认情况下,DateFormat
将打印您的系统时区 中的日期。将格式化程序上的时区设置为 GMT:
DF.setTimeZone(TimeZone.getTimeZone("GMT"));
System.out.println(DF.format(new Date(0))); // outputs: 1970-01-01T00:00Z
关于java - 新的 java.sql.Date(0) 不对应于 00 :00:00 1 January 1970,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16920671/