乐趣区

关于java:java-中日期处理的优雅方法

  1. 依据以后工夫获取指定 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;
      }
  2. 获取以后日期开始前 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
    }
  1. 待补充
退出移动版