假设我有以下解析器与joda-time lib for android
DateTimeFormat.forPattern("dd.MM.yyyy").parseDateTime(maybeDate);
我的目标是使用TextWatcher过滤某些editText中的输入,并尝试解析输入并检查它是否为Date。
以下时间通过此模式,尽管有4个“y”字母!
06.12.1 (虽然我试图把06.12.1988)
P.S。对于格式化程序,appendYear(4,4)也会失败。
答案 0 :(得分:5)
这遵循与Java的SimpleDateFormat
对于解析,如果模式字母的数量大于2,则无论数字位数如何,都按字面解释年份。所以使用模式“MM / dd / yyyy”,“01/11/12”解析到12月1日,12 A.D。
您可能需要考虑的一个选项是在解析后格式化值 - 如果它不是往返的(即格式化的值与原始文本不同),请将其拒绝为无效。