对于这个万年历制作方法,我们需要考虑以下几个方面: 1)显示当前日期和时间 2)支持查询不同年份的日历 3)支持查询不同月份的日历,用Java完善这个代码
时间: 2024-10-26 17:16:21 浏览: 26
为了使用Java制作一个具备显示当前日期和时间、查询不同年份和月份日历功能的万年历应用,我们可以按照以下步骤进行:
1. **设置日期和时间**:
首先,需要导入`java.time`包下的`LocalDateTime`和`ZonedDateTime`类来获取当前日期和时间。可以创建一个方法`displayCurrentDate()`,利用`LocalDateTime.now()`获取本地当前时间和`ZonedDateTime.now()`获取带有时区的时间。
```java
import java.time.LocalDateTime;
import java.time.ZonedDateTime;
public class CalendarApp {
public void displayCurrentDate() {
LocalDateTime currentTime = LocalDateTime.now();
ZonedDateTime zonedTime = ZonedDateTime.now();
System.out.println("当前本地日期时间: " + currentTime);
System.out.println("当前带有时区日期时间: " + zonedTime);
}
}
```
2. **查询不同年份日历**:
可以添加一个方法`viewCalendar(int year)`,接受用户输入的年份作为参数,生成并打印该年的完整日历。这需要用到`YearMonth`类,它表示一个具体的年月。
```java
public void viewCalendar(int year) {
YearMonth yearMonth = YearMonth.of(year, Month.JANUARY); // 示例:查看一月
for (MonthDay day : yearMonth.month().dates()) {
System.out.printf("%02d/%04d%n", day.getDayOfMonth(), year);
}
}
```
3. **查询不同月份日历**:
类似地,为每个月份单独编写方法,如`viewMonthlyCalendar(YearMonth yearMonth)`,将上述代码封装到一个新的方法中,并接收`YearMonth`类型的参数。
```java
public void viewMonthlyCalendar(YearMonth yearMonth) {
for (MonthDay day : yearMonth.month().days()) {
System.out.print(day.getDayOfMonth());
if (day.getDayOfWeek() == DayOfWeek.SATURDAY || day.getDayOfWeek() == DayOfWeek.SUNDAY) {
System.out.println("\n"); // 每周末换行
} else {
System.out.print(", ");
}
}
System.out.println("\n");
}
```
现在你可以结合这三个方法,构建主程序,让用户选择操作(显示当前日期、查询特定年份或月份),然后调用相应的函数。
```java
public static void main(String[] args) {
CalendarApp calendarApp = new CalendarApp();
// 用户选择操作
int choice = ...; // 获取用户输入,例如通过Scanner
switch (choice) {
case 1: // 显示当前日期
calendarApp.displayCurrentDate();
break;
case 2: // 查询指定年份
int inputYear = ...; // 获取用户输入的年份
calendarApp.viewCalendar(inputYear);
break;
case 3: // 查询指定月份
YearMonth inputMonth = ...; // 获取用户输入的月份
calendarApp.viewMonthlyCalendar(inputMonth);
break;
default:
System.out.println("无效的选择");
break;
}
}
```
阅读全文