杰瑞科技汇

Java如何获取当前日期的前一个月日期?

Java 获取当前日期前一个月的日期

在 Java 中,有几种方法可以获取当前日期前一个月的日期,以下是几种常用的实现方式:

Java如何获取当前日期的前一个月日期?-图1
(图片来源网络,侵删)

使用 Java 8 的 LocalDate 和 Period

import java.time.LocalDate;
import java.time.Period;
public class PreviousMonthExample {
    public static void main(String[] args) {
        LocalDate today = LocalDate.now();
        LocalDate previousMonth = today.minusMonths(1);
        System.out.println("当前日期: " + today);
        System.out.println("前一个月的日期: " + previousMonth);
    }
}

使用 Java 8 的 LocalDate 和 Month

import java.time.LocalDate;
import java.time.Month;
public class PreviousMonthExample {
    public static void main(String[] args) {
        LocalDate today = LocalDate.now();
        int year = today.getYear();
        int monthValue = today.getMonthValue();
        if (monthValue == 1) {
            year--;
            monthValue = 12;
        } else {
            monthValue--;
        }
        LocalDate previousMonth = LocalDate.of(year, monthValue, today.getDayOfMonth());
        System.out.println("当前日期: " + today);
        System.out.println("前一个月的日期: " + previousMonth);
    }
}

使用 Calendar 类(Java 8 之前)

import java.util.Calendar;
public class PreviousMonthExample {
    public static void main(String[] args) {
        Calendar calendar = Calendar.getInstance();
        calendar.add(Calendar.MONTH, -1);
        int year = calendar.get(Calendar.YEAR);
        int month = calendar.get(Calendar.MONTH) + 1; // 月份从0开始
        int day = calendar.get(Calendar.DAY_OF_MONTH);
        System.out.println("当前日期: " + Calendar.getInstance().getTime());
        System.out.printf("前一个月的日期: %d-%02d-%02d%n", year, month, day);
    }
}

使用 SimpleDateFormat 格式化输出

import java.text.SimpleDateFormat;
import java.util.Calendar;
public class PreviousMonthExample {
    public static void main(String[] args) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Calendar calendar = Calendar.getInstance();
        System.out.println("当前日期: " + sdf.format(calendar.getTime()));
        calendar.add(Calendar.MONTH, -1);
        System.out.println("前一个月的日期: " + sdf.format(calendar.getTime()));
    }
}

注意事项

  1. 使用 LocalDate.minusMonths(1) 是最简单直接的方法,推荐在 Java 8+ 项目中使用
  2. 当当前日期是某月的最后一天时,minusMonths(1) 会自动调整到前一个月的最后一天(1月31日减去1个月会是12月31日)
  3. Calendar 类的月份是从0开始的(0=一月,11=十二月),需要注意调整
  4. 如果需要处理更复杂的日期计算,可以考虑使用 Java 8 的 Temporal API

选择哪种方法取决于你的 Java 版本和具体需求,对于新项目,强烈推荐使用 Java 8 的日期时间 API。

Java如何获取当前日期的前一个月日期?-图2
(图片来源网络,侵删)
分享:
扫描分享到社交APP
上一篇
下一篇