1

Assume I have following parser with joda-time lib for android

DateTimeFormat.forPattern("dd.MM.yyyy").parseDateTime(maybeDate);

My aim is to filter input in some editText with TextWatcher and try to parse input and check if it is a Date.

The following time passes this pattern, despite there are 4 "y" letters!

06.12.1 (while I tried to put 06.12.1988)

P.S. appendYear(4,4) for formatter also fails.

4

1 に答える 1

5

これは、Javaと同じルールに従いますSimpleDateFormat

構文解析では、パターン文字の数が2を超える場合、桁数に関係なく、年は文字通りに解釈されます。したがって、パターン「MM / dd / yyyy」を使用すると、「01/11/12」は西暦12年1月11日に解析されます。

検討したいオプションの1つは、解析後に値をフォーマットすることです。ラウンドトリップしない場合(つまり、フォーマットされた値が元のテキストと同じでない場合)、無効として拒否します。

于 2012-10-07T12:32:24.940 に答える