以下のコードは、NougatとPre-Nougatの結果が異なります。あなたが望むなら、見てみてください。なぜ誰かが私に説明して解決策を教えてもらえれば嬉しいです。GregorianCalendar setFirstDayOfWeekは、Nougat前のWEEK_OF_YEARには影響しません。
Androidのすべてのバージョンで、週の最初の曜日に応じて、正しいWEEK_OF_YEAR値が必要です。私はタイムシートアプリを持っているし、私はgregorianCalendarをたくさん使っているので、別のクラス/ libに切り替える気がしない。あなたはrelease notes for Nougatを見れば
//default first day of the week is Monday for replication. I live in the Netherlands, it's weird.
Locale l = new Locale("nl", "NL");
GregorianCalendar test = new GregorianCalendar(l);
test.set(Calendar.YEAR, 2017);
test.set(Calendar.MONTH, 0);
test.set(Calendar.DAY_OF_MONTH, 29);//this is a Sunday
int week = test.get(Calendar.WEEK_OF_YEAR);//should be 4
test.setFirstDayOfWeek(1);//Set it to Sunday
int week2 = test.get(Calendar.WEEK_OF_YEAR);//should be 5 but is 4 below nougat???
清算していただきありがとうございます。私の答えは、問題の方向に一般的な頷け(Nougatと一致するアプリとシステムのロケール)を除いて、今あなたにとって有用であるとは思わない。より良い回答を得るために、おそらくもっと何かを明確にすることができます。あなたのサンプルコードのロケールを設定して問題を再現するのか、それともあなたのアプリ内で何かしたいのですか?とにかくありがとう。 –
ロケールは問題を再現するだけです。 –