DateTimeFormatter dateTimeFormatter = DateTimeFormat.forPattern("yyyyww");
dateTimeFormatter.print(new DateTime(2016, 1, 1, 1, 1).withZone(DateTimeZone.UTC))
リターンとしてジョダ時間は201653 201653の
を2016年1月1日のためにyyyywwを返すなぜそれが2016年ではなく2015年の53週のですか?
DateTimeFormatter dateTimeFormatter = DateTimeFormat.forPattern("yyyyww");
dateTimeFormatter.print(new DateTime(2016, 1, 1, 1, 1).withZone(DateTimeZone.UTC))
リターンとしてジョダ時間は201653 201653の
を2016年1月1日のためにyyyywwを返すなぜそれが2016年ではなく2015年の53週のですか?
1月1日が金曜日だったので。その場合、その週は2015年の先週とみなされ、2016年の最初の週は最初の月曜日(1月4日)に開始されます。 ISO 8601標準に従って実装されて
:
週01のいくつかの相互に同等と互換性の説明があります。
- 週はその中の一年の最初の木曜日(正式なISOの定義)で、
- 1月4日の週、
- 開始年の過半数(4つ以上)の最初の週と
- 12月29日〜1月4日の月曜日から始まる週。
は何あなたが探していることは週ベース年(シンボルX)、ない時代(シンボルy)の年です。 pattern syntax used by Joda-TimeもSimpleDateFormat
またはJava-8のものから逸脱していることを参照してください。したがって、ソリューションは次のようになります:
DateTimeFormatter f = DateTimeFormat.forPattern("xxxxww");
String s = f.print(new DateTime(2016, 1, 1, 1, 1).withZone(DateTimeZone.UTC));
System.out.println(s); // 201553
「2015」ではなく「2016」の先週とカウントする必要があります。 – user1483445
ああ、それ。それは別のデータです今年は2016年ですね。 :D –