日期:2014-05-20  浏览次数:20713 次

calendar 简单问题!有点晕了!
先看code:
 Calendar cal = Calendar.getInstance();
 cal.set(1, 2000);
 cal.set(2, 0);
 cal.set(5, 1);
 cal.set(11, 12);
 cal.set(12, 0);
 cal.set(13, 0);
 cal.set(14, 0);
 Date startDate = cal.getTime();
 cal.set(5, 5);
 Date endDate = cal.getTime();
 System.out.println("startDate is : " + startDate.toString());
 System.out.println("endDate is : " + endDate.toString());

得出的结果是:
startDate is : Wed Jan 05 12:00:00 GMT+00:00 2000
endDate is : Wed Jan 05 12:00:00 GMT+00:00 2000

我晕了,为什么startDate不是1月1日啊?
 cal.set(5, 5); //设置DAY_OF_MONTH为5
怎么把startDate也改掉了?晕倒!!

------解决方案--------------------
设置下GMT+8
------解决方案--------------------
我这边完全可以的

startDate就是 1.1

我看了Calendar.getTime()方法,源代码如下
public final Date getTime() {
return new Date(getTimeInMillis());
}

它返回的一个新的Date对象, 不知道是不是版本问题
如果是这样的话 ,建议你用
startDate = new Date(cal.getTimeInMills());
------解决方案--------------------
哦,原来是J2ME,可能实现上有所不同
你可以翻源代码看看
我想我最后列出的解决方案可以帮助你的
------解决方案--------------------
我输出来的是这样:
startDate is : Sat Jan 01 13:13:13 UTC 2000
endDate is : Wed Jan 05 13:13:13 UTC 2000
???
------解决方案--------------------
我输出的结果:startDate is : Sat Jan 01 12:00:00 CST 2000
endDate is : Wed Jan 05 12:00:00 CST 2000
楼主是不是晕了呀!