java 要求输入两个日期yyyyMMdd 1.格式要求大于19700101的8位数,且相差大于4年,年月日要求合法 2.需要代码校验,错误的输入需要提示错误所在,并能够再次输入,输入0退出程序) 3.合法的两个输入后,输出两个日期之间相差的天数 4.要求使用日期时间类。
时间: 2024-02-05 20:11:50 浏览: 140
以下是 Java 代码实现:
```java
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
import java.util.Scanner;
public class DateDifferenceCalculator {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");
LocalDate date1 = null;
LocalDate date2 = null;
while (true) {
// 输入第一个日期
System.out.print("请输入第一个日期(yyyyMMdd,例如:20220101):");
String input1 = scanner.nextLine();
// 输入 0 退出程序
if (input1.equals("0")) {
System.exit(0);
}
// 校验第一个日期格式和合法性
try {
date1 = LocalDate.parse(input1, formatter);
if (date1.isBefore(LocalDate.of(1970, 1, 1))) {
System.out.println("输入错误:日期必须大于19700101!");
continue;
}
} catch (DateTimeParseException e) {
System.out.println("输入错误:日期格式不正确!");
continue;
}
// 输入第二个日期
System.out.print("请输入第二个日期(yyyyMMdd,例如:20221231):");
String input2 = scanner.nextLine();
// 输入 0 退出程序
if (input2.equals("0")) {
System.exit(0);
}
// 校验第二个日期格式和合法性
try {
date2 = LocalDate.parse(input2, formatter);
if (date2.isBefore(LocalDate.of(1970, 1, 1))) {
System.out.println("输入错误:日期必须大于19700101!");
continue;
}
if (date2.isBefore(date1.plusYears(4))) {
System.out.println("输入错误:两个日期相差必须大于4年!");
continue;
}
} catch (DateTimeParseException e) {
System.out.println("输入错误:日期格式不正确!");
continue;
}
// 两个日期都合法,跳出循环
break;
}
// 计算两个日期之间相差的天数
long days = date2.toEpochDay() - date1.toEpochDay();
System.out.println("两个日期之间相差 " + days + " 天。");
}
}
```
代码中使用了 Java 提供的日期时间类 `LocalDate` 和 `DateTimeFormatter` 来进行日期格式化和计算。程序使用 `Scanner` 类来进行用户输入,并对输入进行校验,保证输入的日期格式合法且符合题目要求。最后,程序输出两个日期之间相差的天数。
阅读全文