如何获取LocalDateTime当前时间往前推一个月的日期时间
你需要先对LocalDateTime实例做日期运算,再格式化为字符串,不要先转成字符串再处理,会大大增加复杂度。
Java 8+的LocalDateTime自带了minusMonths()方法,直接传入1即可得到当前时间对应的一个月前的时间,完整代码示例如下:
// 建议将格式化器抽为全局常量复用,避免重复创建 DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy HH:mm:ss"); LocalDateTime now = LocalDateTime.now(); // 计算一个月前的时间 LocalDateTime oneMonthAgo = now.minusMonths(1); // 分别格式化当前时间和一个月前的时间为字符串 String nowStr = now.format(formatter); String oneMonthAgoStr = oneMonthAgo.format(formatter);
补充说明:
- 你原代码里的格式串
dd.MM.yyyy HH:ss:mm是把秒和分钟的位置写反了,正常时分秒的顺序是HH:mm:ss,如果你的业务确实需要这个特殊顺序可以自行调整格式串。 minusMonths()方法会自动处理月末边界场景:比如当前时间是3月31日,减去1个月会自动适配为2月的最后一天(闰年29号,平年28号),不需要额外做日期合法性校验。
内容的提问来源于stack exchange,提问作者AlexWhite
相关产品推荐
相关产品推荐

