Calendar calendar = Calendar.getInstance();        
Calendar calendarWk = Calendar.getInstance();  
  
calendar.setTime(lineWorktime.getStartTime());  
int year = calendar.get(Calendar.YEAR);  
int month = calendar.get(Calendar.MONTH);  
int day = calendar.get(Calendar.DATE);  
  
calendar.setTimeInMillis((long)(calendar.getTimeInMillis() + time *1000));        
calendarWk.setTime(worktime.getEndAm());  
  
calendarWk.set(year, month, day);  
calendarWk.set(Calendar.YEAR, year);  
calendarWk.set(Calendar.MONTH, month);  
calendarWk.set(Calendar.DATE, day);  
  
if(calendar.before(calendarWk))  
{  
    //logic  
}  
Calendar calendar = Calendar.getInstance(); 
Calendar calendarWk = Calendar.getInstance(); calendar.setTime(lineWorktime.getStartTime()); 
int year = calendar.get(Calendar.YEAR); 
int month = calendar.get(Calendar.MONTH); 
int day = calendar.get(Calendar.DATE); calendar.setTimeInMillis((long)(calendar.getTimeInMillis() + time *1000)); 
calendarWk.setTime(worktime.getEndAm()); calendarWk.set(year, month, day); 
calendarWk.set(Calendar.YEAR, year); 
calendarWk.set(Calendar.MONTH, month); 
calendarWk.set(Calendar.DATE, day); if(calendar.before(calendarWk)) 

    //logic 

主要功能是实现calendar和calendarWK比较时刻的早晚,而不考虑年、月、日。 
worktime.getEndAm()是date,但由于其年月日不确定,而lineWorktime.getStartTime()的年月日是准确的 
所以把calendarWk的年月日用calendar的重新设置一下,然后再比较。 
现在是calendarWk的四个set函数好像没有作用,由于年月相同,看不出变化,但day的确没有变 
请问是什么问题?怎么解决 另外,要实现上面的功能不考虑年月日只比较时刻的功能有其它什么好方法,麻烦讲一讲,谢谢。 
(因为比较急,所以很冒昧的请java2000_net帮忙看看,十分感谢)

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【desertriver】截止到2008-07-26 10:58:53的历史汇总数据(不包括此帖):
    发帖的总数量:4                        发帖的总分数:120                      每贴平均分数:30                       
    回帖的总数量:9                        得分贴总数量:5                        回帖的得分率:55%                      
    结贴的总数量:3                        结贴的总分数:70                       
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:1                        未结的总分数:50                       
    结贴的百分比:75.00 %               结分的百分比:58.33 %                  
    无满意结贴率:0.00  %               无满意结分率:0.00  %                  
    楼主加油
      

  2.   

    不考虑年月日的话,可以把两者的年月日都设置成相同的,再直接取时间来比较
    getTimeInMillis(),before();after();
    或者是单独取小时,分钟,秒来进行比较也行。
    GregorianCalendar gCalendar1 = new GregorianCalendar(2008,Calendar.JULY,26,19,20,00);
    GregorianCalendar gCalendar2 = new GregorianCalendar(1987,Calendar.JULY,26,17,20,00);
    gCalendar2.set(gCalendar1.get(Calendar.YEAR), 
            gCalendar1.get(Calendar.MONTH), 
            gCalendar1.get(Calendar.DAY_OF_MONTH));
    String t1 = new SimpleDateFormat("HH:mm:ss").format(gCalendar1.getTime());
    String t2 = new SimpleDateFormat("HH:mm:ss").format(gCalendar2.getTime());
    System.out.println(t1);
    System.out.println(t2);
    System.out.println("t1 < t2 " + gCalendar1.before(gCalendar2));
    System.out.println("t1 > t2 " + gCalendar1.after(gCalendar2));
      

  3.   

    对呀,
    我上面也是把正确Calendar的年月日用set方式设置另外一个Calendar,
    可有时候结果不会改变,晕了
    请问有可能是什么原因引起的呢?
      

  4.   


    SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss"); 

    Calendar calendar = Calendar.getInstance(); 
    Calendar calendarWk = Calendar.getInstance();  calendar.setTime(lineWorktime.getStartTime());  calendar.setTimeInMillis((long)(calendar.getTimeInMillis() + time *1000)); 
    calendarWk.setTime(worktime.getEndAm());  String datestr1 = sdf.format(calendar.getTime());
    String datestr2 = sdf.format(calendarWk.getTime());
    if(sdf.parse(datestr1).before(sdf.parse(datestr2))) //同为1970-01-01,只是时间不同

        //logic 

      

  5.   

    难道没有更简单的吗?
    getTime()返回的Long是
    1000*3600*24把2个日期得到long,然后 % 上面这个数,得到的直接比较就行了。