可以使用Java中的LocalDateLocalDateTime类来实现。

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class Main {
    public static void main(String[] args) {
        String dateStr = "2023-05";
        LocalDate date = LocalDate.parse(dateStr + "-01");
        
        LocalDate nextMonth = date.plusMonths(1);
        LocalDateTime nextMonthStart = nextMonth.atStartOfDay();
        
        LocalDate sixMonthsAgo = date.minusMonths(6);
        LocalDateTime sixMonthsAgoStart = sixMonthsAgo.atStartOfDay();
        
        System.out.println("下个月1号0点:" + nextMonthStart.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME));
        System.out.println("六个月前的1号0点:" + sixMonthsAgoStart.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME));
    }
}

输出结果:

下个月1号0点:2023-06-01T00:00:00
六个月前的1号0点:2022-11-01T00:00:00

这段代码首先使用LocalDate.parse方法将字符串解析为LocalDate对象,然后分别通过plusMonthsminusMonths方法计算出下个月和六个月前的日期。接着使用atStartOfDay方法将日期转换为当天的0点时间。最后使用DateTimeFormatter.ISO_LOCAL_DATE_TIME格式化输出结果

Java 根据 传入的字符串2023-05获取到下个月1号0点和六个月前的1号0点

原文地址: https://www.cveoy.top/t/topic/ihEr 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录