java怎样判断两个日期之间相差几周(支持跨年)?

如题所述


/**
 * 获取两个日期相差的天数
 * @param big
 * @param small
 * @return
 */
public static int getTwoDatesDifOfDay(Date big,Date small){
Calendar cal1 = Calendar.getInstance();
cal1.setTime(big);
Calendar cal2 = Calendar.getInstance();
cal2.setTime(small);
if(cal1.get(Calendar.MONTH) != 11 && cal2.get(Calendar.MONTH)==11){//跨年
Calendar cal3 = Calendar.getInstance();
cal3.set(Calendar.MONTH, 11);
cal3.set(Calendar.DAY_OF_MONTH, 31);
return cal3.get(Calendar.DAY_OF_YEAR)-cal2.get(Calendar.DAY_OF_YEAR)+cal1.get(Calendar.DAY_OF_YEAR);
}else{
return  cal1.get(Calendar.DAY_OF_YEAR)-cal2.get(Calendar.DAY_OF_YEAR);
}


}


/**
 * 获取两个日期相差的周数
 * @param big
 * @param small
 * @return
 */
public static int getTwoDatesDifOfWeek(Date big,Date small){
Calendar cal1 = Calendar.getInstance();
cal1.setTime(big);
Calendar cal2 = Calendar.getInstance();
cal2.setTime(small);
if(cal1.get(Calendar.MONTH) != 11 && cal2.get(Calendar.MONTH)==11){//跨年
Calendar cal3 = Calendar.getInstance();
cal3.set(Calendar.MONTH, 11);
cal3.set(Calendar.DAY_OF_MONTH, 31);
return cal3.get(Calendar.WEEK_OF_YEAR)-cal2.get(Calendar.WEEK_OF_YEAR)+cal1.get(Calendar.WEEK_OF_YEAR);
}else{
return  cal1.get(Calendar.WEEK_OF_YEAR)-cal2.get(Calendar.WEEK_OF_YEAR);
}
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-12-03
要自己来写处理方法的话,感觉比较麻烦呢,用毫秒差来计算应该最精准,不过long本身有长度限制,需要考虑一下,其他估计就要绕弯走了。追问

毫秒差好像也不能吧,比如本周的周五和下周的周一

第2个回答  推荐于2016-05-20
前两天刚做了,你只要看看当中经历了多少星期天就可以

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class datetest {
public static void main(String args[]) throws ParseException {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Calendar start = Calendar.getInstance();
Calendar end = Calendar.getInstance();
Date startDate=format.parse("2013-01-21");
Date endDate= format.parse("2013-03-12");

start.setTime(startDate);
end.setTime(endDate);

int sumSunday = 0;
int sumSat = 0;

while(start.compareTo(end) <= 0) {
int w = start.get(Calendar.DAY_OF_WEEK);
if(w == Calendar.SUNDAY)
sumSunday ++;
if(w == Calendar.SATURDAY)
sumSunday ++;
//打印每天
System.out.println(format.format(start.getTime()));
//循环,每次天数加1
start.set(Calendar.DATE, start.get(Calendar.DATE) + 1);
}
System.out.println("星期天总数为:" + sumSunday);
System.out.println("星期六总数为:" + sumSunday);

System.err.println(new SimpleDateFormat("yyyy-MM-dd HH:mm").format(new Date()));
}
}本回答被提问者采纳
第3个回答  2013-12-03
间隔=Date1.getTime()-Date2.getTime();得出来的是毫秒数.
除1000是秒,再除60是分,再除60是小时.
应该可以计算出间隔周期吧追问

毫秒差不行吧,比如本周的周五和下周的周一,差值是小于一周的,但是它们不在同一周

追答

你提的问题可以再程序里判断的呀,要不你上网搜一下看有没有已经实现好的这个功能呢看运气了

相似回答