实现Java日历需要用到以下几个方面的知识:
- 日期和时间类:Java中有java.util.Date和java.util.Calendar类,但这些类已经被Java 8中的全新日期和时间API(Java.time)所取代,建议使用新API。
- 控制台输出:Java中有System.out.println()方法可以将内容输出到控制台。
- 用户输入:Java中有Scanner类可以读取用户输入。
下面是实现自定义日历的步骤:
- 导入必要的类:
import java.util.Scanner;
import java.time.LocalDate;
- 提供用户输入方法:
public static int getUserInput(String message) {
System.out.print(message);
Scanner scanner = new Scanner(System.in);
return scanner.nextInt();
}
该方法接受一个字符串参数作为提示信息,然后使用Scanner类读取用户的输入并返回一个整数。
- 获取某年的日历:
public static void printYearCalendar(int year) {
for (int month = 1; month <= 12; month++) {
System.out.println(getMonthName(month) + " " + year);
System.out.println("Su Mo Tu We Th Fr Sa");
LocalDate date = LocalDate.of(year, month, 1);
int dayOfWeek = date.getDayOfWeek().getValue();
for (int i = 1; i < dayOfWeek; i++) {
System.out.print(" ");
}
while (date.getMonthValue() == month) {
System.out.printf("%2d ", date.getDayOfMonth());
if (date.getDayOfWeek().getValue() == 7) {
System.out.println();
}
date = date.plusDays(1);
}
if (date.getDayOfWeek().getValue() != 1) {
System.out.println();
}
System.out.println();
}
}
该方法接收一个表示年份的整数参数,并循环遍历1到12个月份,调用getMonthName方法获取月份名称并打印出来。接下来使用LocalDate类获取某年某月的第一天,并计算该日期为星期几。在输出前几天的空格后,循环输出该月的日期。每输出一个日期,判断是否是星期六,如果是则换行。当该月的日期输出完毕后,判断该月的最后一天是否是星期天,如果不是则换行。
- 获取某月的日历:
public static void printMonthCalendar(int year, int month) {
System.out.println(getMonthName(month) + " " + year);
System.out.println("Su Mo Tu We Th Fr Sa");
LocalDate date = LocalDate.of(year, month, 1);
int dayOfWeek = date.getDayOfWeek().getValue();
for (int i = 1; i < dayOfWeek; i++) {
System.out.print(" ");
}
while (date.getMonthValue() == month) {
System.out.printf("%2d ", date.getDayOfMonth());
if (date.getDayOfWeek().getValue() == 7) {
System.out.println();
}
date = date.plusDays(1);
}
if (date.getDayOfWeek().getValue() != 1) {
System.out.println();
}
System.out.println();
}
该方法接收一个整数的年份和月份参数,并使用类似于获取某年的日历的方法获取该月的日历。
下面是两个使用示例:
int year = getUserInput("请输入年份:");
printYearCalendar(year);
int year = getUserInput("请输入年份:");
int month = getUserInput("请输入月份:");
printMonthCalendar(year, month);
第一个示例将会打印出用户输入年份的12个月份的日历,第二个示例将会打印出用户输入的年份和月份的日历。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java实现日历(某年的日历,某月的日历)用户完全自定义 - Python技术站