乐趣区

关于dubbo:Dubbo-3-深度剖析-透过源码认识你学习推荐无M

download:Dubbo 3 深度分析 – 透过源码意识你

输入:

2006-08-30
2006-09-03

(2)roll 方法

cal.set(Calendar.YEAR,2006);
cal.set(Calendar.MONTH,8);
cal.set(Calendar.DAY_OF_MONTH,3);
cal.roll(Calendar.DATE, -4);
date=cal.getTime();
System.out.println(df.format(date));
cal.roll(Calendar.DATE,4);
date=cal.getTime();
System.out.println(df.format(date));

输入:

2006-09-29
2006-09-03

可见,roll() 方法在本月内循环,个别应用 add() 方法;

6、核算两个任意时刻两头的间隔天数

(1) 传进 Calendar 指标

/
** 核算两个时刻之间相隔天数
*@paramstartday 开始时刻
*@paramendday 结束时刻
*@return
*/
publicintgetIntervalDays(Calendar startday,Calendar endday){

// 保障 startday 在 endday 之前
if(startday.after(endday)){
    Calendar cal=startday;
    startday=endday;
    endday=cal;
}
// 分离失去两个时刻的毫秒数
longsl=startday.getTimeInMillis();
longel=endday.getTimeInMillis();

longei=el-sl;   
// 依据毫秒数核算间隔天数
return(int)(ei/(1000*60*60*24));

}

(2) 传进 Date 指标

/** 核算两个时刻之间相隔天数

  • @param startday 开始时刻
  • @param endday 结束时刻
  • @return
    */

publicintgetIntervalDays(Date startday,Date endday){

// 保障 startday 在 endday 之前
if(startday.after(endday)){
    Date cal=startday;
    startday=endday;
    endday=cal;
}
// 分离失去两个时刻的毫秒数
longsl=startday.getTime();
longel=endday.getTime();

longei=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 的时刻,如:

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) 改良准确核算相隔天数的方法

publicintgetDaysBetween (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;
    }
    intdays = d2.get(Calendar.DAY_OF_YEAR) - d1.get(Calendar.DAY_OF_YEAR);
    inty2 = 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);
    }
    returndays;
}
退出移动版