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天?
...全文
178 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
迷失的剑鞘 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());

23,409

社区成员

发帖
与我相关
我的任务
社区描述
Java 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧