Joda time forPattern无法正常使用4位数年份

use*_*151 1 android jodatime

假设我有以下解析器与joda-time lib for android

DateTimeFormat.forPattern("dd.MM.yyyy").parseDateTime(maybeDate);
Run Code Online (Sandbox Code Playgroud)

我的目标是使用TextWatcher过滤某些editText中的输入,并尝试解析输入并检查它是否为Date.

尽管有4个"y"字母,但以下时间通过了这种模式!

06.12.1(当我试图把2008年12月6日)

格式化程序的PS appendYear(4,4)也失败了.

Jon*_*eet 5

这遵循与Java相同的规则 SimpleDateFormat

对于解析,如果模式字母的数量大于2,则无论数字位数如何,都按字面解释年份.所以使用"MM/dd/yyyy"模式,"01/11/12"解析到公元12年1月11日

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