【代码】获取日期所在月份的 月初、月末的日期

当做月报的时候,会有一个从输入日期的月1号开始,到输入的日期,或者月末

比如:求2021.05.26的月初,也就是2021.05.01,,月末:2021.05.31

代码如下:

public class Test {
// 测试代码
    public static void main(String[] args) throws ParseException {

        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        String date = "2021-05-05";
        Date s = dateFormat.parse(date);

        Date[] dates =   getMonthStartEnd(s);
        for (int i = 0; i < dates.length; i++) {

            System.out.println(dateFormat.format(dates[i]));
        }
    }

// 月初月末代码
    public static Date[] getMonthStartEnd(Date day) {
        LocalDateTime now = day.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
        LocalDateTime first = LocalDateTime.of(now.getYear(), now.getMonth(), 1, 0, 0, 0, 0);
        LocalDateTime last = LocalDateTime.of(first.with(TemporalAdjusters.lastDayOfMonth()).getYear(),
                first.with(TemporalAdjusters.lastDayOfMonth()).getMonth(),
                first.with(TemporalAdjusters.lastDayOfMonth()).getDayOfMonth(), 23, 59, 59);
        return new Date[]{Date.from(first.atZone(ZoneId.systemDefault()).toInstant()), Date.from(last.atZone(ZoneId.systemDefault()).toInstant())};
    }
}

输出结果是:2021-05-01   2021-05-31

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值