setLenient(false) 让日期格式通过验证
setLenient(false) let pass validation on date format
我正在尝试使用以下代码验证日期格式
class Ideone
{
public static void main (String[] args) throws java.lang.Exception
{
String dateFormat = "yyyy-MM-dd";
String dateToValidate = "18-12-18";
if(!isThisDateValid(dateToValidate,dateFormat)){
System.out.println("Date is invalid");
}
else{
System.out.println("Date is valid");
}
}
public static boolean isThisDateValid(String dateToValidate, String dateFromat){
if(dateToValidate == null){
return false;
}
SimpleDateFormat sdf = new SimpleDateFormat(dateFromat);
sdf.setLenient(false);
try {
Date date = sdf.parse(dateToValidate);
} catch (ParseException e) {
return false;
}
return true;
}
}
但失败了就让它过去。
此处提供测试代码:https://ideone.com/ryN7HO
有什么想法吗?
18 年是有效年份,SimpleDateFormat
不强制执行特定模式(并且不需要零填充值)。但是,您可以使用正则表达式为 模式 添加检查。四位数字,一个破折号,两位数,一个破折号和两位数。喜欢,
if (!dateToValidate.matches("\d{4}-\d{2}-\d{2}")) {
return false;
}
注意:此代码不符合 Y10k 标准。
我正在尝试使用以下代码验证日期格式
class Ideone
{
public static void main (String[] args) throws java.lang.Exception
{
String dateFormat = "yyyy-MM-dd";
String dateToValidate = "18-12-18";
if(!isThisDateValid(dateToValidate,dateFormat)){
System.out.println("Date is invalid");
}
else{
System.out.println("Date is valid");
}
}
public static boolean isThisDateValid(String dateToValidate, String dateFromat){
if(dateToValidate == null){
return false;
}
SimpleDateFormat sdf = new SimpleDateFormat(dateFromat);
sdf.setLenient(false);
try {
Date date = sdf.parse(dateToValidate);
} catch (ParseException e) {
return false;
}
return true;
}
}
但失败了就让它过去。
此处提供测试代码:https://ideone.com/ryN7HO
有什么想法吗?
18 年是有效年份,SimpleDateFormat
不强制执行特定模式(并且不需要零填充值)。但是,您可以使用正则表达式为 模式 添加检查。四位数字,一个破折号,两位数,一个破折号和两位数。喜欢,
if (!dateToValidate.matches("\d{4}-\d{2}-\d{2}")) {
return false;
}
注意:此代码不符合 Y10k 标准。