熟悉Date类和Calendar类的成员方法的使用,完成万年历 实现输出当前月份日历的程序(输出时要考虑上个月和下个月的天数情况),重点是改为万年历的Java程序,可以任意输出指定月份的日历。gui设计java万年历代码
时间: 2024-12-02 21:21:43 浏览: 20
在Java中,`java.util.Date`类主要用于表示特定的瞬间,而`java.util.Calendar`类则提供了处理日期和时间的功能。为了实现万年历并输出指定月份的日历,我们可以结合这两个类的成员方法。以下是创建一个简单的命令行界面万年历程序的示例:
```java
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Calendar;
public class MyCalendar {
public static void main(String[] args) {
int year = LocalDate.now().getYear(); // 获取当前年份
int month = Integer.parseInt(args[0]); // 输入月份(假设args[0]为用户输入的月份)
// 创建一个Calendar实例,并设置为指定年月
Calendar calendar = Calendar.getInstance();
calendar.set(year, month - 1, 1); // 减一是因为Java中月份从0开始计数
// 输出万年历
System.out.println("+" + Strings.repeat("-", (int) calendar.getActualMaximum(Calendar.DAY_OF_MONTH) + 5));
printWeekdays(calendar);
printMonthDays(calendar);
System.out.println("+");
// 上个月和下个月的天数
if (month > 1) {
calendar.add(Calendar.MONTH, -1);
printMonthDays(calendar, "上个月:");
}
if (month < 12) {
calendar.add(Calendar.MONTH, 1);
printMonthDays(calendar, "下个月:");
}
}
private static void printWeekdays(Calendar calendar) {
String[] weekdays = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
for (String weekday : weekdays) {
System.out.print(weekday + ": ");
}
System.out.println();
}
private static void printMonthDays(Calendar calendar, String prefix) {
for (int i = 1; i <= calendar.getActualMaximum(Calendar.DAY_OF_MONTH); i++) {
System.out.printf("%2d ", i);
}
System.out.println(prefix);
}
// 使用DateTimeFormatter格式化输出,这里简化了部分格式
private static String formatDay(int day) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd");
return String.valueOf(day).padStart(2, '0') + " ";
}
}
```
运行这个程序时,你需要提供一个命令行参数作为月份(例如,`java MyCalendar 4`表示四月)。然后它会打印出指定月份的日历以及上、下一个月的天数。
阅读全文