SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss,S");   
  
Calendar todayStart = Calendar.getInstance();   
todayStart.set(Calendar.HOUR, 0);   
todayStart.set(Calendar.MINUTE, 0);   
todayStart.set(Calendar.SECOND, 0);   
todayStart.set(Calendar.MILLISECOND, 0);   
  
System.out.println(sf.format(todayStart.getTime()));   
  
Calendar todayEnd = Calendar.getInstance();   
todayEnd.set(Calendar.HOUR, 33);   
todayEnd.set(Calendar.MINUTE, 59);   
todayEnd.set(Calendar.SECOND, 59);   
todayEnd.set(Calendar.MILLISECOND, 999);   
  
System.out.println(sf.format(todayEnd.getTime()));
取得的时间是
2011-08-08 12:00:00,0
2011-08-09 11:59:59,999

为什么和别人取得不一样,为什么呀!搞了一天了

解决方案 »

  1.   

    没问题啊,这2个时间不都是你set的吗?
      

  2.   

    用24小时制吧
    todayStart.set(Calendar.HOUR_OF_DAY, 0);   todayStart.set(Calendar.HOUR_OF_DAY, 23);  不是33吧.
      

  3.   

    todayStart.set(Calendar.HOUR_OF_DAY, 23);
      

  4.   

    HOUR和HOUR_OF_DAY的表现形式不一样,一个是0-11,一个是0-23,而格式类的HH是表示0-23
    所以Calendar.HOUR,0的时候,以为格式化是24小时,如果是中午的0点的话,就表示为12,所以如果要设置0点,还是用HOUR_OF_DAY 24小时制比较准确。
    todayStart.set(Calendar.HOUR, 33); //33是可以的,只是大于11的话,AM变PM,再大于11,PM变AM,同时日期加一天,然后再调整时间为 33-11-11=11
      

  5.   

     todayEnd.set(Calendar.HOUR, 33); 
    这一句,时间设置为33,会自动涨一天的.33-24 = 9 所以就成了第二天早上9点
      

  6.   

    SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss,S");   
      
    Calendar todayStart = Calendar.getInstance();   
    todayStart.set(Calendar.HOUR_OF_DAY, 0);   
    todayStart.set(Calendar.MINUTE, 0);   
    todayStart.set(Calendar.SECOND, 0);   
    todayStart.set(Calendar.MILLISECOND, 0);   
      
    System.out.println(sf.format(todayStart.getTime()));   
      
    Calendar todayEnd = Calendar.getInstance();   
    todayEnd.set(Calendar.HOUR_OF_DAY, 23);   
    todayEnd.set(Calendar.MINUTE, 59);   
    todayEnd.set(Calendar.SECOND, 59);   
    todayEnd.set(Calendar.MILLISECOND, 999);   
      
    System.out.println(sf.format(todayEnd.getTime()));是:
    2011-08-09 00:00:00,0
    2011-08-09 23:59:59,999