C# 是可以直接求的,不知道java有没有直接求的方法,
或者有求某年的天数的方法也可以阿。

解决方案 »

  1.   

    public static long getDateDiff(String startDate, String endDate) { 
    int[] start = { 0, 0, 0 }; 
    int[] end = { 0, 0, 0 }; 
    int i = 0; 
    int j = 0; 
    StringTokenizer stStart = new StringTokenizer(startDate, "-"); 
    while (stStart.hasMoreTokens()) { 
    start[i] = Integer.parseInt(stStart.nextToken()); 
    if (++i == 3) 
    break; 

    StringTokenizer stEnd = new StringTokenizer(endDate, "-"); 
    while (stEnd.hasMoreTokens()) { 
    end[j] = Integer.parseInt(stEnd.nextToken()); 
    if (++j == 3) 
    break; 
    } java.sql.Date dStart = new java.sql.Date(start[0]-1900, start[1]-1, start[2]); 
    java.sql.Date dEnd = new java.sql.Date(end[0]-1900, end[1]-1, end[2]); 
    long diffDate = 0; 
    long oneDateMill = 24 * 60 * 60 * 1000; 
    long b = dStart.getTime() - dEnd.getTime(); 
    diffDate = b / oneDateMill; 
    return diffDate; 

      

  2.   

    eqxu(天使联盟) :你的方法不错啊!!!!
    有没有更简单的方法啊~~~~~~
    upup
      

  3.   

    你有数据库不,,,sql.append("values days('" + date + "') - days('" + datatime + "')");date 和 datatime 代表两个时间。列sql.append("values days('2006-05-06') - days('2005-06-07')");这个sql通过数据库运行一下就可以得到相差的天数。。
      

  4.   

    /**
         * 计算两个日期之间的差
         * 注意两个日期格式必须相同
         * @param startDate 字符串开始时间
         * @param endDate 字符串结束时间
         * @param format 时间格式
         * @return int  相差天数
         * @throws ParseException
         */
        public int countDays(String startDate, String endDate, String format)
            throws ParseException
        {
            SimpleDateFormat sf = new SimpleDateFormat(format) ;
            Date sDate = sf.parse(startDate) ;
            Date eDate = sf.parse(endDate) ;
            Calendar c = Calendar.getInstance() ;
            
            c.setTime(sDate);
            long ls = c.getTimeInMillis() ;
            
            c.setTime(eDate);
            long le = c.getTimeInMillis() ;        return (int) ((le-ls)/(24*3600*1000));
        }
      

  5.   

    前几天有个哥们写的算法,借鉴一下就是将传入的日期字符串转成Date之后取其长整形的时间,然后相减得到差值的long型值,最后去除以一天的毫秒数(24小时x3600秒x1000毫秒) 得到的就是天数使用时两个时间字符串的格式必须相同,同时提供格式的format,如输入时间为 2005-05-05格式,则format="yyyy-MM-dd"
      

  6.   

    kevinliuu(@。@) :你的方法和eqxu(天使联盟) 类似,不过好像比他的要好点。
    qczl1224(倾请一世) :方法是不错,可惜我用不上阿。
      

  7.   

    OF COURSE ^o^ java有直接求的方法,用Calendar类。
    看下面:
    import java.util.Calendar;public class DataTest{
      public int countDays(Date sDate, Date eDate)
            throws Exception
        {
            Calendar c = Calendar.getInstance() ;
            
            c.setTime(sDate);
            int ls = c.get(Calendar.DAY_OF_YEAR) ;
            
            c.setTime(eDate);
            int le = c.get(Calendar.DAY_OF_YEAR) ;
            
            if(le.after(ls)){
              return (int) (le-ls);
            }
            else{
              return (int) (ls-le); 
            }
        }
    }
    如果你要求某年的天数如下:Calendar c = Calendar.getInstance() ;
    Date d = new Date("XXXX-XX-XX"); (把那年的日期放入)
    c.setTime(d);
    int dayCount = c.get(Calendar.DAY_OF_YEAR);有问题就提出来,我现在没有IDE,还没运行此代码,呵呵!