当做月报的时候,会有一个从输入日期的月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