日付に 4 桁の年が含まれている場合にのみ、日付を解析するように Joda 時間を強制する方法はありますか? 例えば:
- 2009-11-11 - 解析する必要があります
- 09-11-11 - 解析しないでください
次のコードを試しました:
DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder();
DateTimeFormatter formatter = builder.appendYear(4, 4).appendLiteral('-').appendMonthOfYear(1).appendLiteral('-').appendDayOfMonth(1).toFormatter();
formatter.parseDateTime("09-11-11");
0009-11-11 に解析します。メソッド appendYear の minDigits は、日付を出力するときの書式設定にのみ使用されるようです。
appendYearOfEra() を使用しても結果は同じです。appendYearOfCentury() を使用すると、代わりに年が 1909 に解析されます。
さまざまな種類の入力を認識する一般的なデータ パーサーを実装しています。また、この例は、実際の取引の短縮形です (簡単にするため)。実際のシナリオでは、曜日、単語としての月、時間、ゾーン、および月、日、年を区切るさまざまな文字を含む日付を解析します。したがって、RegEx を記述したり、文字列の内容や長さを確認したりすることは、かなり難しいことがわかります。
実際の例は次のようになります。
- 2009-11-11
- 水曜日 2009-11-11T15:00:00
- 2009/11/11 15:00
- などなど...