输入字符串不需要转成Date,但又需要校验,可通过正则校验,也可根据需要灵活结合String的split方法等
import java.util.regex.Pattern;
一、 yyyy-MM-dd
public static void main(String[] args) {
String dateStr="2021-01-01";
System.out.println(Pattern.matches("^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|(1|2)[0-9]|30|31)$",dateStr));
}
二、年 yyyy 四个自然数
public static void main(String[] args) {
String dateStr="2021";
System.out.println(Pattern.matches("^\\d{4}$",dateStr));
}
三、月 MM 01~ 09 | 10 ~12
public static void main(String[] args) {
String dateStr="01";
System.out.println(Pattern.matches("^(0[1-9]|1[0-2])$",dateStr));
}
四、日 dd 01~ 09 | 10 ~ 19 | 20 ~ 29 | 30 ~31
public static void main(String[] args) {
String dateStr="01";
System.out.println(Pattern.matches("^(0[1-9]|(1|2)[0-9]|30|31)$",dateStr));
}
五、月 m 1 ~ 12
public static void main(String[] args) {
String dateStr="1";
System.out.println(Pattern.matches("^([1-9]|1[0-2])$",dateStr));
}
六、日 d 1 ~ 9 | 10 ~ 19 | 20 ~ 29 | 30 ~ 31
public static void main(String[] args) {
String dateStr="1";
System.out.println(Pattern.matches("^(([1-9])|((1|2)[0-9])|30|31)$",dateStr));
}
七、月 MM 01~ 09 | 10 ~12 或 m 1 ~ 12
public static void main(String[] args) {
String dateStr="1";
System.out.println(Pattern.matches("^(0?[1-9]|1[0-2])$",dateStr));
}
八、日 dd 01~ 09 | 10 ~ 19 | 20 ~ 29 | 30 ~ 31 或 d 1 ~ 9 | 10 ~ 19 | 20 ~ 29 | 30 ~ 31
public static void main(String[] args) {
String dateStr="1";
System.out.println(Pattern.matches("^((0?[1-9])|((1|2)[0-9])|30|31)$",dateStr));
}