依据以后工夫获取指定N个月之前的月份第一天。
/*** 依据以后日期,获取以后月前5个月的开始日期* 以后日期为2021-10-5号 返回后果是 2021-05-01 00:00:00** @param earlyMonth 提前几个月工夫 earlyMonth = 5* @return 2021-05-01 00:00:00*/ private String getStartDateTime(Integer earlyMonth) { LocalDateTime date = LocalDateTime.now().minusMonths(earlyMonth); LocalDateTime firstDay = date.with(TemporalAdjusters.firstDayOfMonth()); String firstDayStr = firstDay.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); log.info("firstDayStr:{}", firstDayStr); return firstDayStr; }
- 获取以后日期开始前N个月的第一天的零时零分零秒开始,这个写法比下面的更优雅
@Test public void test1() { Integer earlyMonth = 5; LocalDateTime date = LocalDateTime.now() .minusMonths(earlyMonth) .withDayOfMonth(1) .withHour(0) .withMinute(0) .withSecond(0) .withNano(0); System.out.println("firstDayStr:" + date); // 输入后果 firstDayStr:2021-12-01T00:00 }
- 待补充