【发布时间】:2018-04-19 07:21:18
【问题描述】:
在我的 android 应用程序中有 2 个编辑文本字段,它们取自日期和最后一个日期,我正在尝试检查日期是否有效我尝试使用此代码但它不起作用.. 错误在哪里我找不到请帮我更正代码
String fromdate,todate;
private Matcher matcher;
private static final String DATE_PATTERN =
"(0?[1-9]|1[012]) [/.-] (0?[1-9]|[12][0-9]|3[01]) [/.-] ((19|20)\\d\\d)";
搜索按钮 Onclick 代码
advsearch.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
fromdate=fromed.getText().toString();
todate=toed.getText().toString();
matcher = Pattern.compile(DATE_PATTERN).matcher(fromdate);
matcher = Pattern.compile(DATE_PATTERN).matcher(todate);
if (!matcher.matches()) {
Toast.makeText(getApplicationContext(), "Invalid Date!", Toast.LENGTH_LONG).show();
}
}
});
}
布尔类
public boolean validate(String date){
matcher = pattern.matcher(date);
if(matcher.matches()){
matcher.reset();
if(matcher.find()){
String day = matcher.group(1);
String month = matcher.group(2);
int year = Integer.parseInt(matcher.group(3));
if (day.equals("31") &&
(month.equals("4") || month .equals("6") || month.equals("9") ||
month.equals("11") || month.equals("04") || month .equals("06") ||
month.equals("09"))) {
return false; // only 1,3,5,7,8,10,12 has 31 days
} else if (month.equals("2") || month.equals("02")) {
//leap year
if(year % 4==0){
if(day.equals("30") || day.equals("31")){
return false;
}else{
return true;
}
}else{
if(day.equals("29")||day.equals("30")||day.equals("31")){
return false;
}else{
return true;
}
}
}else{
return true;
}
}else{
return false;
}
}else{
return false;
}
}
}
}
【问题讨论】:
-
如果您确切知道用户如何输入日期(采用什么格式,例如 MM-dd-YYYY),那么您只需 3 行代码即可验证 stackoverflow.com/a/226920/3999808
-
@nilesh 我检查了该代码,但那里没有使用布尔类
-
@angelina stackoverflow.com/a/4528094/7666442
-
试过
DateTimeKeyListener?
标签: android validation date