如果不是DateFormat则拒绝

时间:2013-07-30 09:27:40

标签: android android-edittext date-format

我有一个问题....我想知道是否有可能在android中输入一个编辑文本字段,如果它不是dateformat dd / mm / yyyy插入它将被拒绝某种方式...如何将输入文本与我想要的格式进行比较?有什么建议????我不认为我需要发布我的代码,因为我想要的只是一般性的东西,我只需要一个例子或类似的东西,但我不知道该怎么做。许多例子使用日期选择器,但我不想使用它...我想手动输入...请给我一些启发请...

哦是的,还有一件事,我找不到带有货币格式的编辑文本字段。它不存在吗?

3 个答案:

答案 0 :(得分:1)

使用TextWatcher侦听对输入字符串的更改,然后使用DateFormat格式化字符串,并查看它是否符合所需格式。

editText.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged(Editable s) {
}

@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}

@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
    // you can check for validity here
});

答案 1 :(得分:1)

试一试。

    public void checkFormate(final EditText mEditText) {

           mEditText.addTextChangedListener(new TextWatcher() {
          @Override
           public void onTextChanged(CharSequence arg0, int arg1, int arg2,
                int arg3) {
            SimpleDateFormat mdaDateFormat = new SimpleDateFormat(
                    "yyyy-MM-dd");
            try {
                mdaDateFormat.parse((String) arg0);
            } catch (ParseException e) {
                e.printStackTrace();
                mEditText.setError("Please enter proper date format");
            }
            }

           @Override
           public void beforeTextChanged(CharSequence arg0, int arg1,
                int arg2, int arg3) {

            }

          @Override
           public void afterTextChanged(Editable arg0) {

           }
       });
  }

答案 2 :(得分:1)

public boolean isValidDate(String date)

{
    SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy");   
    Date testDate = null;      
    try  
    {
      testDate = sdf.parse(date);
    }
    catch (ParseException e)   
    {
      errorMessage = "the date you provided is in an invalid date" +
                              " format.";
      return false;
    } 
    if (!sdf.format(testDate).equals(date))
    {
      errorMessage = "The date that you provided is invalid.";
      return false;
    }
    return true;   
}