import java.text.SimpleDateFormat;不用这个
时间: 2024-12-05 09:14:13 浏览: 10
如果你不想使用`java.text.SimpleDateFormat`来格式化日期,可以改用`java.time`包下的日期和时间API,例如`LocalDate`和`DayOfWeek`。下面是一个示例,展示了如何使用`java.time`替换`SimpleDateFormat`来打印年历:
```java
import java.time.LocalDate;
import java.time.format.TextStyle;
import java.util.Scanner;
import java.util.stream.Collectors;
// 无SimpleDateFormat版本的YearCalendar类
public class YearCalendarWithoutSdf {
// 年份属性
private int year;
// 初始化年历类,传入年份
public YearCalendarWithoutSdf(int year) {
this.year = year;
}
// 打印年历
public void printCalendar() {
LocalDate startDate = LocalDate.of(year, 1, 1); // 使用LocalDate从年初开始
while (!startDate.isAfter(LocalDate.of(year + 1, 1, 1))) { // 循环直到年底
String formattedDate = startDate.getMonthValue() + "-" + startDate.getDayOfMonth(); // 使用MonthDay格式
System.out.printf("月份:%s - %s\n", startDate.getMonth(), formattedDate);
System.out.println("星期:" + startDate.getDayOfWeek().getDisplayName(TextStyle.FULL, Locale.getDefault()));
startDate = startDate.plusMonths(1); // 移动到下一个月
}
}
// 主程序入口,测试公历万历年历
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入年份:");
int inputYear = scanner.nextInt();
YearCalendarWithoutSdf cal = new YearCalendarWithoutSdf(inputYear);
cal.printCalendar();
}
}
```
在这个版本中,我们不再需要手动设置日期格式,`DayOfWeek`直接提供全名显示。
阅读全文