java用面向对象的方法编写一个日期计算程序,完成以下功能: (1)从键盘输入一个月份,屏幕上输出本年这个月份的月历,每星期一行,从星期日开始,到星期六结束。 (2)从键盘输入一个日期,屏幕上回答是星期几,也以当年为例。 (3)从键盘输入两个日期,计算这两个日期之间含有多少天。
时间: 2024-10-08 13:03:56 浏览: 37
java编写一个类,该类可以进行加、减、乘、除四则运算,并且输出运算结果
为了实现上述的日期计算程序,我们可以使用Java的`java.time`包,它提供了丰富的日期和时间处理工具。下面是一个简单的示例程序,实现了这三个功能:
```java
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Scanner;
public class DateCalculator {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 功能一:打印当前月份的日历
System.out.println("请输入月份(1-12):");
int month = scanner.nextInt();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("uuuu-MMM");
LocalDate date = LocalDate.now().withMonth(month);
printCalendar(date, "周日", "周六");
// 功能二:查询指定日期是星期几
System.out.println("\n请输入日期(格式:yyyy-MM-dd):");
String inputDateStr = scanner.nextLine();
LocalDate inputDate = LocalDate.parse(inputDateStr, formatter);
System.out.printf("输入日期 %s 是星期%O%n", inputDateStr, inputDate.getDayOfWeek());
// 功能三:计算两个日期之间的天数差
System.out.println("\n请输入第二个日期(格式同上):");
String secondDateStr = scanner.nextLine();
LocalDate secondDate = LocalDate.parse(secondDateStr, formatter);
long daysBetween = ChronoUnit.DAYS.between(inputDate, secondDate);
System.out.printf("两个日期之间相隔 %d 天%n", daysBetween);
scanner.close();
}
private static void printCalendar(LocalDate startDate, String... daysOfWeek) {
for (LocalDate day :(startDate.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY))
.until(startDate.plusMonths(1), LocalDay::of)).toArray()) {
String weekDay = daysOfWeek[day.getDayOfWeek().getValue()];
System.out.format("%s ", weekDay);
if (day.getDayOfWeek() == DayOfWeek.SATURDAY) {
System.out.println();
}
}
}
}
```
在这个例子中,我们首先获取用户输入的月份,并打印出对应的日历。然后,通过`DateTimeFormatter`解析用户输入的日期并确定其对应的星期几。最后,计算两个日期之间的天数差。
阅读全文