10/19/2005

new Date(0)

向来只知道new Date(0)是1970年1月1日
今天在laszlo里写new Date(1970,0,1,0,0).getTime()却得到了-28800000的答案,一除,相差了8小时,心想这肯定是因为我们在+8时区了, 顿时很迷惑,到底该用new Date(0)还是new Date(1970,0,1,0,0)。
又在java里写了一个测试,果然,
Calendar cal = new GregorianCalendar();
cal.setTime(new Date(0));
assertEquals(1970, cal.get(Calendar.YEAR));
assertEquals(0, cal.get(Calendar.
MONTH));
assertEquals(1, cal.get(Calendar.DAY_OF_MONTH));
assertEquals(8, cal.get(Calendar.HOUR_OF_DAY));
assertEquals(0, cal.getTimeInMillis());
Calendar cal2 = new GregorianCalendar(1970, 0, 1, 0, 0, 0);
assertEqual(0, cal2.getTimeInMillis() + cal2.get(Calendar.ZONE_OFFSE));
想想也对,Date是带着TimeZone信息的,而这个时间0点又不能因为地区的不同而有不同的含义,嗯……这下认识到了
在laszlo中的写法就是
var tempt=new Date(1970, 0, 1);
if (tempt.getTime()==tempt.getTimezoneOffset()*60000);
而我想,在我需要的这个地方还是用0比较好,而不是各个地区的"0"。

没有评论: