获取某月的第一个和最后个星期一

来源:互联网 发布:淘宝蛋蛋家全名 编辑:程序博客网 时间:2024/04/29 08:17

想着获取当前是第几周,先获取开学那天,看了两年的校历好像是9月份第一个星期一和2月份最后个星期一。

如下图9月第一个星期一是9月5号
9月

最后个星期一是2月27号
2月

代码如下

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);    }}
0 0