java中如何获取 某年第一天、某年最后一天、某月第一天、某月最后一天

代码:

public class Test {
    public static void main(String[] args) {
        // 打印该年份的第一天的日期
        getFirstDateForYear(2020);
        // 打印该年份的最后一天的日期
        getLastDateForYear(2020);
        // 打印该年份中的该月份第一天的日期
        getFirstDateForYearAndMonth(2020, 12);
        // 打印该年份中的该月份最后一天的日期
        getLastDateForYearAndMonth(2020, 12);
        // 打印该日期之前几天的日期
        getFrontDate1(new Date(), 1);
        // 打印该日期之前几天的日期
        getFrontDate2(new Date(), 1);
    }

    /**
     * 打印该年份的第一天
     *
     * @param year 年份
     */
    public static void getFirstDateForYear(int year) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.YEAR, year);
        calendar.set(Calendar.MONTH, calendar.getActualMinimum(Calendar.MONTH));
        calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMinimum(Calendar.DAY_OF_MONTH));
        System.out.println(year + "年的第一天:" + new SimpleDateFormat("yyyy-MM-dd").format(calendar.getTime()));
    }

    /**
     * 打印该年份的最后一天
     *
     * @param year 年份
     */
    public static void getLastDateForYear(int year) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.YEAR, year);
        calendar.set(Calendar.MONTH, calendar.getActualMaximum(Calendar.MONTH));
        calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
        System.out.println(year + "年的最后一天:" + new SimpleDateFormat("yyyy-MM-dd").format(calendar.getTime()));
    }

    /**
     * 打印该月份的第一天
     *
     * @param year  年份
     * @param month 月份
     */
    public static void getFirstDateForYearAndMonth(int year, int month) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.YEAR, year);
        calendar.set(Calendar.MONTH, month - 1);
        calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMinimum(Calendar.DAY_OF_MONTH));
        System.out.println(year + "年" + month + "月份的第一天:" + new SimpleDateFormat("yyyy-MM-dd").format(calendar.getTime()));
    }

    /**
     * 打印该月份的第一天
     *
     * @param year  年份
     * @param month 月份
     */
    public static void getLastDateForYearAndMonth(int year, int month) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.YEAR, year);
        calendar.set(Calendar.MONTH, month - 1);
        calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
        System.out.println(year + "年" + month + "月份的最后一天:" + new SimpleDateFormat("yyyy-MM-dd").format(calendar.getTime()));
    }
    
	/**
     * 打印该日期之前几天的日期
     *
     * @param date 日期
     * @param day  天数
     */
    public static void getFrontDate1(Date date, int day) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        // 之后的加上正值
        calendar.add(Calendar.DAY_OF_MONTH, day * -1);
        System.out.println("某天前一天:" + new SimpleDateFormat("yyyy-MM-dd").format(calendar.getTime()));
    }

    /**
     * 打印该日期之前几天的日期
     *
     * @param date 日期
     * @param day  天数
     */
    public static void getFrontDate2(Date date, int day) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        // 之后的用plusDays()方法
        LocalDate localDate = LocalDate.of(calendar.getWeekYear(), calendar.get(Calendar.MONTH) + 1, calendar.get(Calendar.DAY_OF_MONTH)).minusDays(day);
        System.out.println("某天前一天:" + localDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
    }
}

结果:

2020年的第一天:2020-01-01
2020年的最后一天:2020-12-31
202012月份的第一天:2020-12-01
202012月份的最后一天:2020-12-31
某天前一天:2021-04-16
某天前一天:2021-04-16

延伸

至于开头和末尾的时分秒,大家也是可以通过这种方法得到的,所以不再赘述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值