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

使用 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()));
}
}
注意事项
- 使用
LocalDate.minusMonths(1)是最简单直接的方法,推荐在 Java 8+ 项目中使用 - 当当前日期是某月的最后一天时,
minusMonths(1)会自动调整到前一个月的最后一天(1月31日减去1个月会是12月31日) - Calendar 类的月份是从0开始的(0=一月,11=十二月),需要注意调整
- 如果需要处理更复杂的日期计算,可以考虑使用 Java 8 的 Temporal API
选择哪种方法取决于你的 Java 版本和具体需求,对于新项目,强烈推荐使用 Java 8 的日期时间 API。

