62,614
社区成员
发帖
与我相关
我的任务
分享
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
/**
* 我的思路:
* 1.计算相隔天数
* 2.加上第一个星期已经过去的天数
* 3.加上最后一个星期剩余的天数
* 4.除以7得出结果(经过2、3步骤,除以7都能得到整数)
*
*/
public class GetWeek {
public static void main(String[] args) throws ParseException {
String staDate = "2016-8-24";
String endDate = "2016-8-29";
SimpleDateFormat myMat = new SimpleDateFormat("yy-MM-dd");
//算出相隔天数
int dayNum = (int) ((myMat.parse(endDate).getTime() -
myMat.parse(staDate).getTime())/(1000*60*60*24));
Calendar cal = Calendar.getInstance();
cal.setTime(myMat.parse(staDate));
int staWeek = cal.get(Calendar.DAY_OF_WEEK);//获取星期几,星期日为第一天值为1
staWeek = yourWeek(staWeek);//把星期几换成你要的,星期一为第一天值为1
System.out.println("staWeek:"+staWeek);
dayNum = dayNum + (staWeek-1);//把第一个星期已经过去的天数加到总数中;(staWeek-1)当天算已经过去了
cal.setTime(myMat.parse(endDate));
int endWeek = cal.get(Calendar.DAY_OF_WEEK);
endWeek = yourWeek(endWeek);
System.out.println("endWeek:"+endWeek);
dayNum = dayNum + (7-(endWeek-1));//把最后一个星期剩余的天数加到总数;(staWeek-1)当天算刚开始
System.out.println(dayNum/7.0);//除以7.0是为了验证会不会有小数
}
public static int yourWeek(int oldWeek){
int newWeek = -1;
newWeek = oldWeek - 1;
if(newWeek == 0){
newWeek = 7;
}
return newWeek;
}
}
package MyTest;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
public class c {
static int xiqiji(Calendar c){
int dayForWeek;
if(c.get(Calendar.DAY_OF_WEEK) == 1){
dayForWeek = 7;
}else{
dayForWeek = c.get(Calendar.DAY_OF_WEEK) - 1;}
return dayForWeek;
}
static Calendar From(Calendar c){
switch(xiqiji(c)){
case 1:c.set(Calendar.DAY_OF_YEAR, c.get(Calendar.DAY_OF_YEAR)-0);
break;
case 2:c.set(Calendar.DAY_OF_YEAR, c.get(Calendar.DAY_OF_YEAR)-1);
break;
case 3:c.set(Calendar.DAY_OF_YEAR, c.get(Calendar.DAY_OF_YEAR)-2);
break;
case 4:c.set(Calendar.DAY_OF_YEAR, c.get(Calendar.DAY_OF_YEAR)-3);
break;
case 5:c.set(Calendar.DAY_OF_YEAR, c.get(Calendar.DAY_OF_YEAR)-4);
break;
case 6:c.set(Calendar.DAY_OF_YEAR, c.get(Calendar.DAY_OF_YEAR)-5);
break;
case 7:c.set(Calendar.DAY_OF_YEAR, c.get(Calendar.DAY_OF_YEAR)-6);
}
return c;
}
static Calendar To(Calendar c){
switch(xiqiji(c)){
case 1:c.set(Calendar.DAY_OF_YEAR, c.get(Calendar.DAY_OF_YEAR)+6);
break;
case 2:c.set(Calendar.DAY_OF_YEAR, c.get(Calendar.DAY_OF_YEAR)+5);
break;
case 3:c.set(Calendar.DAY_OF_YEAR, c.get(Calendar.DAY_OF_YEAR)+4);
break;
case 4:c.set(Calendar.DAY_OF_YEAR, c.get(Calendar.DAY_OF_YEAR)+3);
break;
case 5:c.set(Calendar.DAY_OF_YEAR, c.get(Calendar.DAY_OF_YEAR)+2);
break;
case 6:c.set(Calendar.DAY_OF_YEAR, c.get(Calendar.DAY_OF_YEAR)+1);
break;
case 7:c.set(Calendar.DAY_OF_YEAR, c.get(Calendar.DAY_OF_YEAR)+0);
}
return c;
}
public static void main(String[] args) throws ParseException {
Calendar c1 = Calendar.getInstance();
Calendar c2 = Calendar.getInstance();
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
c1.setTime(sdf.parse("2016-08-14"));
c2.setTime(sdf.parse("2016-08-22"));
long cc1=From(c1).getTimeInMillis()/(1000*3600*24);
long cc2=To(c2).getTimeInMillis()/(1000*3600*24);
System.out.println((cc2-cc1+1)/7);
}
}