以mm / yy格式格式化到期日期

用户名

嗨,我正在写一个编辑文本,我想用MM / YY格式表示信用卡的有效期。我要实现的算法如下:如果用户输入2到9之间的任何内容。我将输入文本更改为02 /到09 /如果用户输入1,则我等待下一个数字并检查int值月份如果小于12。这是我的代码。

@Override
            public void afterTextChanged(Editable s) { 
            String input = s.toString();
                if (s.length() == 1) {
                        int month = Integer.parseInt(input);
                        if (month > 1) {
                            mExpiryDate.setText("0" + mExpiryDate.getText().toString() + "/");
                            mExpiryDate.setSelection(mExpiryDate.getText().toString().length());
                            mSeperator = true;
                        }

                }
                else if (s.length() == 2) {
                        int month = Integer.parseInt(input);
                        if (month <= 12) {
                            mExpiryDate.setText(mExpiryDate.getText().toString() + "/");
                            mExpiryDate.setSelection(mExpiryDate.getText().toString().length());                            
                            mSeperator = true;
                        }
                }
                else {

                }

            }

直到我按下功能键后退按钮,此方法才能正常工作。反斜线永远不会返回。原因是条件始终满足的第二个原因。我对如何解决这个问题感到困惑。更改文本后如何处理内部的后退按钮?请帮忙。

亚历克斯

请参阅上面的我的评论,以了解您的问题。您可以使用它来验证您的textwatcher用户输入:

SimpleDateFormat formatter = 
    new SimpleDateFormat("MM/yy", Locale.GERMANY);
Calendar expiryDateDate = Calendar.getInstance();
try {
    expiryDateDate.setTime(formatter.parse(mExpiryDate.getText().toString()));
} catch (ParseException e) {
    //not valid
}
// expiryDateDate has a valid date from the user

因此,总的来说:

String lastInput ="";

@Override
public void afterTextChanged(Editable s) { 
     String input = s.toString();
     SimpleDateFormat formatter = new SimpleDateFormat("MM/yy", Locale.GERMANY);
    Calendar expiryDateDate = Calendar.getInstance();
    try {
        expiryDateDate.setTime(formatter.parse(input));
    } catch (ParseException e) {
        if (s.length() == 2 && !lastInput.endsWith("/")) {
            int month = Integer.parseInt(input);
            if (month <= 12) {
               mExpiryDate.setText(mExpiryDate.getText().toString() + "/");
            }
        }else if (s.length() == 2 && lastInput.endsWith("/")) {
            int month = Integer.parseInt(input);
            if (month <= 12) {
               mExpiryDate.setText(mExpiryDate.getText().toString().subStr(0,1);
            }
        }
        lastInput = mExpiryDate.getText().toString();
        //because not valid so code exits here
        return;
    }
    // expiryDateDate has a valid date from the user
    // Do something with expiryDateDate here
}

最后是完整的解决方案:

String input = s.toString();
SimpleDateFormat formatter = new SimpleDateFormat("MM/yy", Locale.GERMANY);
Calendar expiryDateDate = Calendar.getInstance();
try {
   expiryDateDate.setTime(formatter.parse(input));
} catch (ParseException e) {

} catch (java.text.ParseException e) {
if (s.length() == 2 && !mLastInput.endsWith("/")) {
   int month = Integer.parseInt(input);
   if (month <= 12) {
      mExpiryDate.setText(mExpiryDate.getText().toString() + "/");
      mExpiryDate.setSelection(mExpiryDate.getText().toString().length());
   }
}else if (s.length() == 2 && mLastInput.endsWith("/")) {
   int month = Integer.parseInt(input);
    if (month <= 12) {
       mExpiryDate.setText(mExpiryDate.getText().toString().substring(0,1));
       mExpiryDate.setSelection(mExpiryDate.getText().toString().length());
    } else {
       mExpiryDate.setText("");
       mExpiryDate.setSelection(mExpiryDate.getText().toString().length());
       Toast.makeText(getApplicationContext(), "Enter a valid month", Toast.LENGTH_LONG).show();
    }
} else if (s.length() == 1){
    int month = Integer.parseInt(input);
    if (month > 1) {
       mExpiryDate.setText("0" + mExpiryDate.getText().toString() + "/");
       mExpiryDate.setSelection(mExpiryDate.getText().toString().length());
    }
}
else {

}
mLastInput = mExpiryDate.getText().toString();
return;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

插入时间到期日期格式屏蔽(MM/YYYY)

来自分类Dev

将aa.bb.yy格式化日期更改为dd / mm / yyyy

来自分类Dev

从 mm/yy 解析日期格式为 mm-yy

来自分类Dev

动态格式化信用卡到期日期的文本框

来自分类Dev

奇怪的日期格式化YY-mm-dd中列的一部分,其余列YY-dd-mm

来自分类Dev

Javascript regex日期格式dd / mm / yy

来自分类Dev

将日期格式 YYYY-MM-DD-HH-MM-SS 替换为格式化日期

来自分类Dev

VB 6.0-格式化文本框“ dd / MM / yy”

来自分类Dev

在jQuery数据表中显示之前,将json日期格式化为mm / dd / yy格式

来自分类Dev

如何在PHP中将日期dd / mm / YY转换为mm-dd-YY格式

来自分类Dev

如何以“yyyy/MM/dd HH:mm:ss”格式格式化给定日期“31.12.9999”

来自分类Dev

在Java中将dateTime转换为dd / mm / yy格式的日期

来自分类Dev

jQuery datepicker日期格式“ yy-mm-dd”在codeigniter上

来自分类Dev

SAS数字日期格式为dd / mm / yy

来自分类Dev

按日期DD / MM / YY格式对JS数组排序

来自分类Dev

Asp 网络样板 - 日期格式 dd/mm/yy

来自分类Dev

格式化毫秒为hh:mm:ss格式

来自分类Dev

如何格式化以HH:MM:SS格式给出的时间?

来自分类Dev

格式化毫秒为hh:mm:ss格式

来自分类Dev

在android中,是否可以将日期对象格式化为mm-dd-yy?如果是,那怎么办?

来自分类Dev

使用Javascript将MySQL日期格式转换为DD / MM / YY日期格式

来自分类Dev

使用Javascript将MySQL日期格式转换为DD / MM / YY日期格式

来自分类Dev

使用jQuery验证addMethod格式化日期dd.mm.yyyy以输入文本

来自分类Dev

使用jQuery验证addMethod格式化日期dd.mm.yyyy来输入文本

来自分类Dev

在 shell 脚本中格式化日期 YYYY-MM-DD +DAY + Mounth

来自分类Dev

在python中将格式为dd.mm.yy的日期转换为yyyy-mm-dd

来自分类Dev

将日期格式yy / todaydaysinyear / totalsecondsinday转换为dd / mm / yyyy hh / mm / ss

来自分类Dev

在Javascript中将TZ日期格式转换为“ dd / mm / yy hh:mm:ss”

来自分类Dev

要在Sybase中将字符串mm / dd / yy转换为日期yyyy / mm / dd格式

Related 相关文章

  1. 1

    插入时间到期日期格式屏蔽(MM/YYYY)

  2. 2

    将aa.bb.yy格式化日期更改为dd / mm / yyyy

  3. 3

    从 mm/yy 解析日期格式为 mm-yy

  4. 4

    动态格式化信用卡到期日期的文本框

  5. 5

    奇怪的日期格式化YY-mm-dd中列的一部分,其余列YY-dd-mm

  6. 6

    Javascript regex日期格式dd / mm / yy

  7. 7

    将日期格式 YYYY-MM-DD-HH-MM-SS 替换为格式化日期

  8. 8

    VB 6.0-格式化文本框“ dd / MM / yy”

  9. 9

    在jQuery数据表中显示之前,将json日期格式化为mm / dd / yy格式

  10. 10

    如何在PHP中将日期dd / mm / YY转换为mm-dd-YY格式

  11. 11

    如何以“yyyy/MM/dd HH:mm:ss”格式格式化给定日期“31.12.9999”

  12. 12

    在Java中将dateTime转换为dd / mm / yy格式的日期

  13. 13

    jQuery datepicker日期格式“ yy-mm-dd”在codeigniter上

  14. 14

    SAS数字日期格式为dd / mm / yy

  15. 15

    按日期DD / MM / YY格式对JS数组排序

  16. 16

    Asp 网络样板 - 日期格式 dd/mm/yy

  17. 17

    格式化毫秒为hh:mm:ss格式

  18. 18

    如何格式化以HH:MM:SS格式给出的时间?

  19. 19

    格式化毫秒为hh:mm:ss格式

  20. 20

    在android中,是否可以将日期对象格式化为mm-dd-yy?如果是,那怎么办?

  21. 21

    使用Javascript将MySQL日期格式转换为DD / MM / YY日期格式

  22. 22

    使用Javascript将MySQL日期格式转换为DD / MM / YY日期格式

  23. 23

    使用jQuery验证addMethod格式化日期dd.mm.yyyy以输入文本

  24. 24

    使用jQuery验证addMethod格式化日期dd.mm.yyyy来输入文本

  25. 25

    在 shell 脚本中格式化日期 YYYY-MM-DD +DAY + Mounth

  26. 26

    在python中将格式为dd.mm.yy的日期转换为yyyy-mm-dd

  27. 27

    将日期格式yy / todaydaysinyear / totalsecondsinday转换为dd / mm / yyyy hh / mm / ss

  28. 28

    在Javascript中将TZ日期格式转换为“ dd / mm / yy hh:mm:ss”

  29. 29

    要在Sybase中将字符串mm / dd / yy转换为日期yyyy / mm / dd格式

热门标签

归档