校验年月日格式Java
时间: 2023-10-21 12:06:08 浏览: 33
Sure, I can help with that! To validate a date in Java, you can use the SimpleDateFormat class. Here's an example:
String inputDate = "2022-01-31";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
sdf.setLenient(false);
try {
Date date = sdf.parse(inputDate);
System.out.println("Valid date!");
} catch (ParseException e) {
System.out.println("Invalid date!");
}
This code takes a date string in the format "yyyy-MM-dd" and tries to parse it using the SimpleDateFormat object. If the date is valid, it prints "Valid date!" to the console; otherwise, it prints "Invalid date!". I hope this helps!
相关问题
java身份证校验工具类
Java身份证校验工具类是用来校验中国居民身份证号码的合法性。校验工具类通常会实现两种方法:一种是根据身份证号码计算出校验码并与身份证号码中的校验码进行比较,以此判断身份证号码是否合法;另一种是根据身份证号码中的年月日等信息来进行判断。
以下是一个Java身份证校验工具类的示例代码:
```
public class IDCardUtil {
/**
* 校验身份证号码的合法性
* @param idCard 身份证号码
* @return true:合法,false:不合法
*/
public static boolean isValid(String idCard) {
if (idCard == null || idCard.length() != 18) {
return false;
}
// 校验身份证号码中的前17位是否为数字
for (int i = 0; i < 17; i++) {
char c = idCard.charAt(i);
if (c < '0' || c > '9') {
return false;
}
}
// 计算校验码
int sum = 0;
for (int i = 0; i < 17; i++) {
int num = idCard.charAt(i) - '0';
sum += num * Math.pow(2, 17 - i);
}
int mod = sum % 11;
String checkCode = "10X98765432".substring(mod, mod + 1);
// 判断校验码是否正确
return checkCode.equals(idCard.substring(17));
}
}
```
java 要求输入两个日期yyyyMMdd 1.格式要求大于19700101的8位数,且相差大于4年,年月日要求合法 2.需要代码校验,错误的输入需要提示错误所在,并能够再次输入,输入0退出程序) 3.合法的两个输入后,输出两个日期之间相差的天数 4.要求使用日期时间类。
以下是 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` 类来进行用户输入,并对输入进行校验,保证输入的日期格式合法且符合题目要求。最后,程序输出两个日期之间相差的天数。