아래 코드는 Nougat과 Nougat에 대해 다른 결과를 제공합니다. 원하는 경우 직접 확인해보십시오. 왜 누군가가 나에게 설명하고 해결책을 줄 수 있다면 고맙겠습니다.GregorianCalendar setFirstDayOfWeek이 Nougat의 WEEK_OF_YEAR에 영향을 미치지 않습니다.
모든 Android 버전에서 첫 번째 요일에 따라 정확한 WEEK_OF_YEAR 값을 원합니다. 나는 시간표 응용 프로그램이 있고 gregianCalendar를 많이 사용하고 있으므로 다른 클래스/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 app and system locale과 일치 함)을 제외하고는 지금 당신에게 유용 할 것이라고 생각하지 않는다. 더 나은 답변을 얻기 위해 아마도 더 많은 것을 명확히 할 수 있습니다. 샘플 코드에서 Locale을 설정하여 문제를 재현하거나 앱 내부에서 수행하고자하는 작업입니까? 어쨌든 고마워, –
. Locale은 문제를 재현하기위한 것입니다. –