我已经对此进行了很多搜索,但是我没有找到一种方法来检查用户在 EditText 中编写的文本是否与 SimpleDateFormat 匹配,是否有一种简单的方法可以在不使用 regex 的情况下做到这一点?
这是我的 SimpleDateFormat :
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
我想测试一个字符串是否尊重这种格式。
我已经对此进行了很多搜索,但是我没有找到一种方法来检查用户在 EditText 中编写的文本是否与 SimpleDateFormat 匹配,是否有一种简单的方法可以在不使用 regex 的情况下做到这一点?
这是我的 SimpleDateFormat :
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
我想测试一个字符串是否尊重这种格式。
您可以使用 aTextWatcher
来监听您的输入更改,EditText
并可以在其提供的任一方法中执行适当的操作。
yourEditText.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
@Override
public void afterTextChanged(Editable s) {
//you may perform your checks here
}
});
我找到了一种方法,方法是将我的字符串解析为 try/catch 块中的日期。如果字符串是可解析的,它匹配 SimpleDateFormat :
try {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String date = ((EditText) findViewById(R.id.editTextDate)).getText().toString(); // EditText to check
java.util.Date parsedDate = dateFormat.parse(date);
java.sql.Timestamp timestamp = new java.sql.Timestamp(parsedDate.getTime());
// If the string can be parsed in date, it matches the SimpleDateFormat
// Do whatever you want to do if String matches SimpleDateFormat.
}
catch (java.text.ParseException e) {
// Else if there's an exception, it doesn't
// Do whatever you want to do if it doesn't.
}