java8 獲取某月的月首和月末時間

獲取本月月首月末

    public static void main(String[] args) {
        LocalDateTime now = LocalDateTime.now();
        LocalDateTime startDate = now.withDayOfMonth(1).truncatedTo(ChronoUnit.DAYS);
        LocalDateTime endDate = now.plusMonths(1L).withDayOfMonth(1).truncatedTo(ChronoUnit.DAYS).plus(-1L, ChronoUnit.MILLIS);
        System.out.println(startDate);
        System.out.println(endDate);
    }
2019-12-01T00:00
2019-12-31T23:59:59.999
    public static void main(String[] args) {
        ZonedDateTime now = ZonedDateTime.now().withZoneSameInstant(ZoneId.systemDefault());
        ZonedDateTime startDate = now.withDayOfMonth(1).truncatedTo(ChronoUnit.DAYS);
        ZonedDateTime endDate = now.plusMonths(1L).withDayOfMonth(1).truncatedTo(ChronoUnit.DAYS).plus(-1L, ChronoUnit.MILLIS);
        System.out.println(startDate);
        System.out.println(endDate);
    }
2019-12-01T00:00+08:00[Asia/Shanghai]
2019-12-31T23:59:59.999+08:00[Asia/Shanghai]

 

獲取上個月月首月末

public static void main(String[] args) {
        LocalDateTime now = LocalDateTime.now();
        LocalDateTime startDate = now.plusMonths(-1L).withDayOfMonth(1).truncatedTo(ChronoUnit.DAYS);
        LocalDateTime endDate = now.withDayOfMonth(1).truncatedTo(ChronoUnit.DAYS).truncatedTo(ChronoUnit.DAYS)
            .plus(-1L, ChronoUnit.MILLIS);
        System.out.println(startDate);
        System.out.println(endDate);
    }
2019-11-01T00:00
2019-11-30T23:59:59.999
    public static void main(String[] args) {
        ZonedDateTime now = ZonedDateTime.now().withZoneSameInstant(ZoneId.systemDefault());
        ZonedDateTime startDate = now.plusMonths(-1L).withDayOfMonth(1).truncatedTo(ChronoUnit.DAYS);
        ZonedDateTime endDate = now.withDayOfMonth(1).truncatedTo(ChronoUnit.DAYS).plus(-1L, ChronoUnit.MILLIS);
        System.out.println(startDate);
        System.out.println(endDate);
    }
2019-11-01T00:00+08:00[Asia/Shanghai]
2019-11-30T23:59:59.999+08:00[Asia/Shanghai]

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章