想着获取当前是第几周,先获取开学那天,看了两年的校历好像是9月份第一个星期一和2月份最后个星期一。
如下图9月第一个星期一是9月5号
最后个星期一是2月27号
代码如下
class DayUtils{
/**
* 指定年月的第一个星期一
* @param year
* @param month
*/
static void firstMonday(int year, int month){
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, year);
cal.set(Calendar.MONTH, month - 1); //从0开始
int day = 1;
cal.set(Calendar.DAY_OF_MONTH, day); //从第一天开始找第一个星期一
while(cal.get(Calendar.DAY_OF_WEEK) != Calendar.MONDAY){
cal.set(Calendar.DAY_OF_MONTH, ++day);
}
Date firstMonday = cal.getTime();
String dtStr = new SimpleDateFormat("yyyy-MM-dd").format(firstMonday);
System.out.println(dtStr);
}
/**
* 指定年月的最后个星期一
* @param year
* @param month
*/
static void lastMonday(int year, int month){
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, year);
cal.set(Calendar.MONTH, month - 1);
cal.set(Calendar.DAY_OF_MONTH, 1); //防止getInstance()返回今天是2月29号,被认为是3月了
int lastDay = cal.getActualMaximum(Calendar.DAY_OF_MONTH); //每个月的最大天数
cal.set(Calendar.DAY_OF_MONTH, lastDay);
while(cal.get(Calendar.DAY_OF_WEEK) != Calendar.MONDAY){
cal.set(Calendar.DAY_OF_MONTH, --lastDay);
}
Date lastMonday = cal.getTime();
String dtStr = new SimpleDateFormat("yyyy-MM-dd").format(lastMonday);
System.out.println(dtStr);
}
/**
* 返回指定年月的第一天(1号)是星期几
* @param year
* @param month
*/
static int DayofFirstDay(int year, int month){
int[] weekDays = {7, 1, 2, 3, 4, 5, 6};
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, year);
cal.set(Calendar.MONTH, month - 1); //从0开始
cal.set(Calendar.DAY_OF_MONTH, 1);
int day = cal.get(Calendar.DAY_OF_WEEK) - 1 ;
if(day < 0) day = 0;
System.out.println("星期"+weekDays[day]);
return weekDays[day];
}
}
public class Main {
public static void main(String[] args) {
DayUtils.lastMonday(2016,2);
DayUtils.lastMonday(2017,2);
DayUtils.firstMonday(2016,9);
DayUtils.firstMonday(2017,9);
}
}