一部の言語では、完全な日付形式の月名と独立形式の月名が異なります。Java 8 では、DateFormatSymbols の getMonthNames メソッドと getShortMonthNames メソッドは、月名が異なる言語の場合に、フォーマット設定された形式の月名を返します。Java 7 以前のバージョンでは、これらのメソッドは独立形式の月名を返します。
Java 8 では、DateFormat クラスと SimpleDateFormat クラスを使用した日時値のフォーマット設定でも、独立版ではなく、フォーマット設定が選択された月名が使用されます。言語と日付パターンによっては、format メソッドを使用すると、返される月名が異なる場合があります。
Java 7 では、日付のフォーマット形式のパターン ("yyyyy.MMMMM.dd" など) で月を表すのは M のみです。
Java 8 では、独立形式用に L が導入され、それを使用することで Java 7 の振る舞いに戻せるようになりました。
M 月 (コンテキスト依存)
L 月 (独立形式)
この規則により、以下の日付関連の API にフラグを立てます。
フラグが立てられたコードを検証して、実行時に正しい月名が表示されることを確認します。独立形式が使用されなければならない場合にフォーマット設定された形式で月名が表示されるときは、M ではなく L を使用して月名を表します。
該当する言語を使用しない場合や、月を数値としてフォーマット設定する場合は、フラグを無視するか、この規則をオフにできます。
詳しくは、以下のクラスに関する Java 資料を参照してください。