asp里有datediff函数
有没有类似的函数
网上看到一个 日差 的 比较办法有错
import java.util.*;public class Example {
   public static void main(String[] args) {
      Calendar cal = Calendar.getInstance();
Calendar cal1 = Calendar.getInstance();
cal.set(2005,03,01);
cal1.set(2005,02,28);
System.out.println((cal.getTimeInMillis()-cal1.getTimeInMillis())/(1000*3600*24));
   }
}
计算的结果是4,按照道理是1
有没有好点的函数

解决方案 »

  1.   

    哈哈,代码是正确的,只是你对Calendar的月理解不对,Calendar的月份是用0表示1月,所以,cal.set(2005,03,01);
    cal1.set(2005,02,28);cal是 2005-04-01
    call是 2005-03-28计算的结果是4是对的!
      

  2.   

    public static void main(String[] args) {
         Calendar cal = Calendar.getInstance();
         Calendar cal1 = Calendar.getInstance();
         cal.set(2005,03,01);
         cal1.set(2005,02,28);
         System.out.println((cal.get(cal.MONTH)) - (cal1.get(cal1.MONTH)));
         }
      

  3.   

    还可以用:        java.util.Date a = new java.util.Date();
            java.util.Date b = new java.util.Date();
            
            a.after(b);
      

  4.   

    补:
       a.getMonth() - b.getMonth() .....
      

  5.   

    楼上方法不可取,如果前者cal的年份改为2004呢,计算出来的月份是错误的。
      

  6.   

    static int getMonthDiff(Calendar cal, Calendar cal1){
    int m = (cal.get(cal.MONTH)) - (cal1.get(cal1.MONTH));
    int y = (cal.get(cal.YEAR)) - (cal1.get(cal1.YEAR));
    return y * 12 + m;
    }

      public static void main(String[] args){
     
         Calendar cal = Calendar.getInstance();
         Calendar cal1 = Calendar.getInstance();
         cal.set(2005,03,01);
         cal1.set(2004,07,28);
         System.out.println(getMonthDiff(cal, cal1));
      }