应Java实现要求输入两个日期yyyyMMdd 1.格式要求大于19700101的8位数,且相差大于4年,年月日要求合法 2.需要代码校验,错误的输入需要提示错误所在,并能够再次输入,输入0退出程序) 3.合法的两个输入后,输出两个日期之间相差的天数 4.要求使用日期时间类。
时间: 2024-02-05 08:11:46 浏览: 124
好的,以下是Java实现的代码:
```java
import java.time.LocalDate;
import java.time.format.DateTimeParseException;
import java.util.Scanner;
public class DateDifference {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
LocalDate date1 = null, date2 = null;
while (true) {
System.out.print("请输入第一个日期(yyyyMMdd),输入0退出程序:");
String strDate1 = scanner.nextLine();
if (strDate1.equals("0")) {
System.exit(0);
}
try {
date1 = LocalDate.parse(strDate1, java.time.format.DateTimeFormatter.BASIC_ISO_DATE);
if (date1.isBefore(LocalDate.of(1970, 1, 1))) {
System.out.println("日期必须大于19700101!");
continue;
}
} catch (DateTimeParseException e) {
System.out.println("日期格式不正确!");
continue;
}
System.out.print("请输入第二个日期(yyyyMMdd):");
String strDate2 = scanner.nextLine();
if (strDate2.equals("0")) {
System.exit(0);
}
try {
date2 = LocalDate.parse(strDate2, java.time.format.DateTimeFormatter.BASIC_ISO_DATE);
if (date2.isBefore(LocalDate.of(1970, 1, 1))) {
System.out.println("日期必须大于19700101!");
continue;
}
} catch (DateTimeParseException e) {
System.out.println("日期格式不正确!");
continue;
}
if (Math.abs(date1.getYear() - date2.getYear()) < 4) {
System.out.println("两个日期相差必须大于4年!");
continue;
}
long days = Math.abs(date1.toEpochDay() - date2.toEpochDay());
System.out.println("两个日期相差" + days + "天。");
}
}
}
```
代码实现的主要思路是:
1. 使用Scanner类获取用户输入的两个日期字符串。
2. 使用LocalDate类的parse方法将字符串转换为日期。
3. 判断日期是否符合要求,如果不符合则提示错误并重新输入。
4. 判断两个日期相差是否大于4年,如果不符合则提示错误并重新输入。
5. 计算两个日期相差的天数,使用toEpochDay方法将日期转换为自1970年1月1日以来经过的天数进行计算。
阅读全文