做了遮掩一个实验:
public static void main(String[] args) {
long currentTime = System.currentTimeMillis();
int timestamp = (int) (currentTime / 1000);
System.out.println(currentTime);
System.out.println((long)timestamp*1000);
SimpleDateFormat dt=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(dt.format(new java.util.Date(currentTime)));
System.out.println(dt.format(new java.util.Date((long)timestamp*1000)));
}
做完以后输出是这样的:
1301636255788
1301636255000
2011-04-01 13:37:35
2011-04-01 13:37:35
于是就奇怪了,最后new Date()里面的时间不相同,为什么格式化以后的日期却是相同的呢?
在群里面问了一下,答案是这样的:
格式化的时候输入到秒,而两个时间只相差858毫秒,还不到一秒呢,也就是说你SimpeDateFormat里面的那个pattern只是精确到秒,所以就出现了上面那种情况,当二者相差不到1秒的时候,格式化出来当然就相同了。