Java 获取年份 内所有的月份. 排除未来时间
时间: 2024-12-19 20:25:49 浏览: 4
java获取指定开始时间与结束时间之间的所有日期
在Java中,你可以使用`java.time`包提供的`MonthDay`类以及`Year`类来获取特定年份内的所有月份。但是要注意的是,`YearMonth`类更方便地表示日期,它包含了完整的年份和月份,而`MonthDay`则不包含具体的年份。下面是一个示例,展示如何获取给定年份内(不包括未来的)的月份列表:
```java
import java.time.MonthDay;
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
int targetYear = 2024; // 可以替换为你需要查询的实际年份
if (targetYear < LocalDateTime.now().getYear()) {
System.out.println("Target year is in the past or not set yet.");
return;
}
List<MonthDay> monthsInYear = new ArrayList<>();
for (int i = 1; i <= 12; i++) {
MonthDay monthDay = MonthDay.of(i, 1); // 每个月的第一天
if (monthDay.isBefore(MonthDay.of(targetYear + 1, 1))) { // 如果不在下一年
monthsInYear.add(monthDay);
}
}
System.out.println("Months in " + targetYear + ":");
for (MonthDay month : monthsInYear) {
System.out.println(month.getMonthValue() + "/" + month.getDayOfMonth());
}
}
}
```
这个代码首先确认目标年份是否在过去,然后创建一个`MonthDay`的列表,循环添加每个月的第一天,直到达到下一个年份的开始。这样就排除了未来的月份。
阅读全文