2016-03-21 4 views
1
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週のですか?

答えて

0

1月1日が金曜日だったので。その場合、その週は2015年の先週とみなされ、2016年の最初の週は最初の月曜日(1月4日)に開始されます。 ISO 8601標準に従って実装されて

週01のいくつかの相互に同等と互換性の説明があります。
- 週はその中の一年の最初の木曜日(正式なISOの定義)で、
- 1月4日の週、
- 開始年の過半数(4つ以上)の最初の週と
- 12月29日〜1月4日の月曜日から始まる週。

+0

「2015」ではなく「2016」の先週とカウントする必要があります。 – user1483445

+0

ああ、それ。それは別のデータです今年は2016年ですね。 :D –

1

は何あなたが探していることは週ベース年(シンボルX)、ない時代(シンボルy)の年です。 pattern syntax used by Joda-TimeSimpleDateFormatまたは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 
関連する問題