当前所在位置:珠峰网资料 >> 计算机 >> 计算机等级考试 >> 正文
Java中Date各种相关用法(2)
发布时间:2010/9/14 10:38:58 来源:城市学习网 编辑:ziteng
  6.计算两个任意时间中间的间隔天数
  (1)传进Calendar对象
  Java代码
  /** *//**计算两个时间之间相隔天数
  * @param startday 开始时间
  * @param endday 结束时间
  * @return
  */
  public int getIntervalDays(Calendar startday,Calendar endday)...{
  //确保startday在endday之前
  if(startday.after(endday))...{
  Calendar cal=startday;
  startday=endday;
  endday=cal;
  }
  //分别得到两个时间的毫秒数
  long sl=startday.getTimeInMillis();
  long el=endday.getTimeInMillis();
  long ei=el-sl;
  //根据毫秒数计算间隔天数
  return (int)(ei/(1000*60*60*24));
  }
  (2)传进Date对象
  Java代码
  /** *//**计算两个时间之间相隔天数
  * @param startday 开始时间
  * @param endday 结束时间
  * @return
  */
  public int getIntervalDays(Date startday,Date endday)...{
  //确保startday在endday之前
  if(startday.after(endday))...{
  Date cal=startday;
  startday=endday;
  endday=cal;
  }
  //分别得到两个时间的毫秒数
  long sl=startday.getTime();
  long el=endday.getTime();
  long ei=el-sl;
  //根据毫秒数计算间隔天数
  return (int)(ei/(1000*60*60*24));
  }
  同理,可以用相同的方法计算出任意两个时间相隔的小时数,分钟数,秒钟数等
  注:以上方法是完全按时间计算,有时并不能令人满意,如:
  startday="2006-10-11 20:00:00"
  endday="2006-10-12 8:00:00"
  计算结果为0,但是我们也许相让计算结果变为1,此时可以用如下方法实现:
  在传参之前,先设定endday的时间,如:
  Java代码
  endday.set(Calendar.HOUR_OF_DAY, 23);
  endday.set(Calendar.MINUTE, 59);
  endday.set(Calendar.SECOND, 59);
  endday.set(Calendar.MILLISECOND, 59);
  这样再传进去startday,endday,则结果就如我们所愿了。不过,如果嫌以上方法麻烦,可以参考以下方法:
  (3)改进精确计算相隔天数的方法
  Java代码
  public int getDaysBetween (Calendar d1, Calendar d2) ...{
  if (d1.after(d2)) ...{ // swap dates so that d1 is start and d2 is end
  java.util.Calendar swap = d1;
  d1 = d2;
  d2 = swap;
  }
  int days = d2.get(Calendar.DAY_OF_YEAR) - d1.get(Calendar.DAY_OF_YEAR);
  int y2 = d2.get(Calendar.YEAR);
  if (d1.get(Calendar.YEAR) != y2) ...{
  d1 = (Calendar) d1.clone();
  do ...{
  days += d1.getActualMaximum(Calendar.DAY_OF_YEAR);//得到当年的实际天数
  d1.add(Calendar.YEAR, 1);
  } while (d1.get(Calendar.YEAR) != y2);
  }
  return days;
  }
广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved