假设我有以下解析器和 joda-time lib for android
DateTimeFormat.forPattern("dd.MM.yyyy").parseDateTime(maybeDate);
我的目标是使用 TextWatcher 过滤某些 editText 中的输入,并尝试解析输入并检查它是否是日期。
尽管有 4 个“y”字母,但接下来的时间会通过这种模式!
06.12.1(而我试图把 06.12.1988)
格式化程序的 PS appendYear(4,4) 也失败。
这遵循与 Java 相同的规则SimpleDateFormat
对于解析,如果模式字母的数量超过 2 个,则按字面解释年份,而不考虑位数。所以使用模式 "MM/dd/yyyy", "01/11/12" 解析到公元 12 年 1 月 11 日
您可能要考虑的一种选择是在解析后格式化值 - 如果它不是往返(即,如果格式化的值与原始文本不同),则将其视为无效而拒绝。