怎么比较两个Date型的年月日 大小                 Date sysDate1 = new Date();


Calendar cal=Calendar.getInstance();
cal.setTimeInMillis(sysDate1.getTime());
cal.set(Calendar.HOUR, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);

Long sysDateResult1 = cal.getTimeInMillis();
System.out.println("sysDateResult1 :" + sysDateResult1);打印出来的值每次都不一样,以上是不是取得年月日的毫秒?

解决方案 »

  1.   

    我的理解是这样的
    cal.set(Calendar.HOUR, 0);
    cal.set(Calendar.MINUTE, 0);
    cal.set(Calendar.SECOND, 0);
    上面三句话已经把 HOUR MINUTE SECOND设成0了
    接下来
    cal.getTimeInMillis();
    得到的是年月日的毫秒数应该是不变的,因为年月日已经固定了
      

  2.   

    year mounth day hour minute second只是TimeInMillis的一种表示而已你之把h m s重设了,取出来的millis当然不一样了 
      

  3.   


    我的意思是 h m s重设 成0 了
    那么接下来cal.getTimeInMillis();
    得到的是年月日的 数据咯
    那么在同一天里执行的话应该不变的吧
      

  4.   

    set(f, value) changes calendar field f to value. In addition, it sets an internal member variable to indicate that calendar field f has been changed. Although calendar field f is changed immediately, the calendar's time value in milliseconds is not recomputed until the next call to get(), getTime(), getTimeInMillis(), add(), or roll() is made.这是API说的,意思就是当你用set方法设定的时候,不会计算时间,而等你调用getTimeInMillis()方法时才会计算
      

  5.   

    还是有点不理解 h m s重设 成0 了之后 
    在cal.getTimeInMillis();
    调用时计算时间的话,年月日也是不变的啊我是这么理解的,但根据实际情况的话我的理解是错的
    有人能清楚的说明下么 或提供一个比较 年月日 的方法
      

  6.   

    刚才dubug了一下你的程序,
    cal.set(Calendar.HOUR, 0);
    cal.set(Calendar.MINUTE, 0);
    cal.set(Calendar.SECOND, 0);根本就没有改变当前的时间,你可以在这三句后面打印输出一下当前的时间
      

  7.   

    不过三行set也确实将HOUR MINUTE SECOND三个静态常量值改成了0。java.util.GregorianCalendar[time=1299038400877,areFieldsSet=true,areAllFieldsSet=false,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2011,MONTH=2,WEEK_OF_YEAR=10,WEEK_OF_MONTH=1,DAY_OF_MONTH=2,DAY_OF_YEAR=61,DAY_OF_WEEK=4,DAY_OF_WEEK_IN_MONTH=1,AM_PM=1,HOUR=0,HOUR_OF_DAY=12,MINUTE=0,SECOND=0,MILLISECOND=877,ZONE_OFFSET=28800000,DST_OFFSET=0]
    你每次输出的值就是time而这个值就是方括号里面的一堆常量算出来的,而不只是HOUR MINUTE SENCON三个常量 虽然hour minute和senond为0 但是其余的静态常量有的再变,至少MILLISECOND=877每次运行都不一样
      

  8.   

    可以debug看看源码是怎么执行的