1.计算当天是开学第几周星期几
public static int getweek(Date d1, Date d2) {
// 获得当前日期与本周日相差的天数
Calendar cd = Calendar.getInstance();
cd.setTime(d2);
// 获得今天是一周的第几天,星期日是第一天,星期二是第二天......
int dayOfWeek = cd.get(Calendar.DAY_OF_WEEK)-1 ; // 因为按中国礼拜一作为第一天所以这里减1
long daysBetween = (d1.getTime() - d2.getTime() + 1000000) / (60 * 60 * 24 * 1000);
int weekindex= (int) (daysBetween / 7+1);
if(dayOfWeek+daysBetween % 7>7){
weekindex+=1;
}
return weekindex;
}
public static void main(String[] args) {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat dateFm = new SimpleDateFormat("EEEE");
Date d=new Date();
String startday="2022-02-16";//开学日期
System.out.println("当天日期:"+format.format(d));
System.out.println("开学日期:"+startday);
//计算当前日期是开学的第几周
Date d1 = null;
try {
d1 = format.parse(startday);
} catch (ParseException e) {
e.printStackTrace();
}
int weeks = getweek(d,d1) ;//开学第几周
String currSun = dateFm.format(d);//获取当前日期是星期几
System.out.println("当天为开学第"+weeks+"周---"+currSun);
}
控制台输出如下:
2. 开学第几周星期几为哪一天
public static String getDayAfter(String Day,int days){
Calendar c = Calendar.getInstance();
Date date=null;
try {
date = new SimpleDateFormat("yyyy-MM-dd").parse(Day);
} catch (ParseException e) {
e.printStackTrace();
}
c.setTime(date);
int day=c.get(Calendar.DATE);
c.set(Calendar.DATE,day+days);//days开学天数
String dayAfter=new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());
return dayAfter;
}
public static void main(String[] args) {
int week=4;//开学第三周
int week_day=3;//星期三
System.out.println("开学第"+week+"周--星期"+week_day);
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
String startday="2022-02-16";//开学日期
System.out.println("开学日期:"+startday);
Date d1 = null;
try {
d1 = format.parse(startday);
} catch (ParseException e) {
e.printStackTrace();
}
Calendar cd = Calendar.getInstance();
cd.setTime(d1);
// 获得今天是一周的第几天,星期日是第一天,星期二是第二天......
int dayOfWeek = cd.get(Calendar.DAY_OF_WEEK)-1 ; // 因为按中国礼拜一作为第一天所以这里减1
//计算从开学到指定周的天数
int days=(week-2)*7+(7-dayOfWeek)+week_day;//完整周天数+第一周上课天数+指定周上课天数
System.out.println("开学到指定周的天数:"+days);
String dayAfter=getDayAfter(startday,days);
System.out.println("指定周的具体日期:"+dayAfter);
}
控制台输出如下:



