要求输入两个日期yyyyMMdd 1.格式要求大于19700101的8位数,且相差大于4年,年月日要求合法 2.需要代码校验,错误的输入需要提示错误所在,并能够再次输入,输入0退出程序) 3.合法的两个输入后,输出两个日期之间相差的天数 4.要求使用日期时间类。
时间: 2024-02-05 10:11:33 浏览: 83
Excel表格中根据身份证号码自动填出生日期计算年龄(精)2.pdf
好的,我来给您写一份Java代码实现您的需求。
```java
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
import java.util.Scanner;
public class DateDiffCalculator {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String input1, input2;
LocalDate date1 = null, date2 = null;
boolean validInput1 = false, validInput2 = false;
while (!validInput1) {
System.out.print("请输入起始日期(格式为yyyyMMdd,输入0退出程序):");
input1 = scanner.nextLine().trim();
if (input1.equals("0")) {
System.out.println("程序已退出。");
return;
}
try {
date1 = LocalDate.parse(input1, DateTimeFormatter.BASIC_ISO_DATE);
if (date1.isBefore(LocalDate.of(1970, 1, 1))) {
System.out.println("日期必须晚于1970年1月1日。");
} else {
validInput1 = true;
}
} catch (DateTimeParseException e) {
System.out.println("日期格式错误,请重新输入。");
}
}
while (!validInput2) {
System.out.print("请输入结束日期(格式为yyyyMMdd,输入0退出程序):");
input2 = scanner.nextLine().trim();
if (input2.equals("0")) {
System.out.println("程序已退出。");
return;
}
try {
date2 = LocalDate.parse(input2, DateTimeFormatter.BASIC_ISO_DATE);
if (date2.isBefore(LocalDate.of(1970, 1, 1))) {
System.out.println("日期必须晚于1970年1月1日。");
} else if (date2.isBefore(date1.plusYears(4))) {
System.out.println("两个日期之间必须相差大于4年。");
} else {
validInput2 = true;
}
} catch (DateTimeParseException e) {
System.out.println("日期格式错误,请重新输入。");
}
}
long daysBetween = date1.until(date2).getDays();
System.out.println("两个日期之间相差 " + daysBetween + " 天。");
}
}
```
代码使用了Java 8中的日期时间类`LocalDate`,并使用了`Scanner`类来接收用户输入。校验用户输入的部分使用了异常处理。
您可以将代码保存为`DateDiffCalculator.java`,在命令行中使用`javac DateDiffCalculator.java`编译,然后使用`java DateDiffCalculator`运行程序。
阅读全文