SimpleDateFormat で、「y」が 2011 を返すのに、「Y」は 2012 を返すのはなぜですか?
観察した動作 (「Y」の場合)同じ Date オブジェクトに対して 2012 を出力し、「y」は 2011 を出力します。
週年と暦年
日付の書式設定では、「Y」は週年を表します。は暦年と一致しますが、週の計算方法により異なる場合があります。週の年は、年の最初の週の日曜日に始まり、年の最後の週の土曜日に終わります。
一方、「y」は暦年を表します。 1 月 1 日に始まる伝統的なグレゴリオ暦の年。
この例では、週年の計算によれば、使用した Date オブジェクトは 2012 年の最初の週に該当しますが、最後の週の範囲内にあります。暦年の計算に基づく 2011 年の週。その結果、「Y」は 2012 (週年) を出力し、「y」は 2011 (暦年) を出力します。
この概念をさらに詳しく説明するために、次の例を考えてみましょう。
System.out.println(new SimpleDateFormat("Y").format(new Date("December 29, 1997"))); // prints 1998 System.out.println(new SimpleDateFormat("y").format(new Date("December 29, 1997"))); // prints 1997
この場合、日付は厳密には最後の週であっても、その週の年の最初の週に含まれるため、「Y」は 1998 と印刷されます。ただし、「y」は、指定された日付の暦年であるため、1997 年を出力します。
以上がSimpleDateFormat: 「Y」が「y」とは異なる年を示すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。