1

假设我有以下解析器和 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) 也失败。

4

1 回答 1

5

这遵循与 Java 相同的规则SimpleDateFormat

对于解析,如果模式字母的数量超过 2 个,则按字面解释年份,而不考虑位数。所以使用模式 "MM/dd/yyyy", "01/11/12" 解析到公元 12 年 1 月 11 日

您可能要考虑的一种选择是在解析后格式化值 - 如果它不是往返(即,如果格式化的值与原始文本不同),则将其视为无效而拒绝。

于 2012-10-07T12:32:24.940 回答