Date的getTime返回的值怎么跟预想的不同?

迷失的剑鞘 2011-12-09 12:49:04
源程序:
import java.util.*;
public class Text{
public static void main(String args[]){
Date startDate=new GregorianCalendar(1970,01,01,00,00).getTime();
Date endDate=new GregorianCalendar(1970,02,01,00,00).getTime();
long dif1=startDate.getTime();
long b1=dif1/(1000*3600*24);
long dif2=endDate.getTime()-startDate.getTime();
long b2=dif2/(1000*3600*24);
System.out.println(dif1+" "+b1+" "+" "+dif2+" "+b2);
}
}
结果:
2649600000 30 2419200000 28

gettime应该返回到1970.01.01的时间间隔,怎么我用1970.01.01去算没返回0而是30?
而且,不管gettime返回的是到什么时候的时间啊间隔,dif2都应该是1970年1月的天数,怎么会只有28天?
...全文
89 点赞 收藏 6
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
迷失的剑鞘 2011-12-09
谢谢了
回复
oO临时工Oo 2011-12-09
[Quote=引用 4 楼 sotom 的回复:]

引用 2 楼 huntor 的回复:

月份最好使用 Caldendar中的常量,直观易理解。
01、04 这种数字是八进制值,不要到了后面 08,09的使用。


恩,Date 已经是不建议使用的Api了, 建议使用Calendar
[/Quote]

Calendar 强大,只可惜,Date出身太早,成了很多对象的爹.
回复
sotom 2011-12-09
[Quote=引用 2 楼 huntor 的回复:]

月份最好使用 Caldendar中的常量,直观易理解。
01、04 这种数字是八进制值,不要到了后面 08,09的使用。
[/Quote]

恩,Date 已经是不建议使用的Api了, 建议使用Calendar
回复
sotom 2011-12-09
[Quote=引用 1 楼 kouyisc 的回复:]

LZ要理解月份是用0开始的。。实际的月份如果是:5月,
那么你new GregorianCalendar(1970,04,01,00,00).getTime(); 这样表示。。

建议你打印一下就知道了。。。
System.out.println(startDate.toLocaleString());
System.out.println(endDate.toLocaleString……
[/Quote]
正解。
回复
huntor 2011-12-09
月份最好使用 Caldendar中的常量,直观易理解。
01、04 这种数字是八进制值,不要到了后面 08,09的使用。
回复
kouyiSC 2011-12-09
LZ要理解月份是用0开始的。。实际的月份如果是:5月,
那么你new GregorianCalendar(1970,04,01,00,00).getTime(); 这样表示。。

建议你打印一下就知道了。。。
System.out.println(startDate.toLocaleString());
System.out.println(endDate.toLocaleString());
回复
相关推荐
发帖
非技术区
创建于2007-09-28

2.3w+

社区成员

Java 非技术区
申请成为版主
帖子事件
创建了帖子
2011-12-09 12:49
社区公告
暂无公告