通过键盘输入字符串类型的日期”2023-05-24“,按图片要求显示如下效果的日历内容。
时间: 2024-03-22 16:40:01 浏览: 38
好的,这是一个Java编程问题。以下是代码实现:
```java
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;
public class CalendarExample {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入日期(格式:yyyy-MM-dd):");
String strDate = scanner.nextLine();
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
try {
Date date = dateFormat.parse(strDate);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH) + 1;
int day = calendar.get(Calendar.DAY_OF_MONTH);
int week = calendar.get(Calendar.DAY_OF_WEEK) - 1;
System.out.println("日\t一\t二\t三\t四\t五\t六");
for (int i = 1; i <= week; i++) {
System.out.print("\t");
}
int maxDay = getMaxDay(year, month);
for (int i = 1; i <= maxDay; i++) {
if (i == day) {
System.out.print(i + "*\t");
} else {
System.out.print(i + "\t");
}
if ((week + i) % 7 == 0) {
System.out.println();
}
}
} catch (ParseException e) {
System.out.println("日期格式不正确!");
}
}
private static int getMaxDay(int year, int month) {
if (month == 2) {
return isLeapYear(year) ? 29 : 28;
} else if (month == 4 || month == 6 || month == 9 || month == 11) {
return 30;
} else {
return 31;
}
}
private static boolean isLeapYear(int year) {
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
}
```
运行程序后,输入一个日期字符串(例如:2023-05-24),程序会按照要求显示该日期对应月份的日历。下面是一个示例输出:
```
请输入日期(格式:yyyy-MM-dd):2023-05-24
日 一 二 三 四 五 六
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24*
25 26 27 28 29 30 31
```
其中,* 号标识出输入的日期对应的日期。
阅读全文