2014-12-26 3 views
3

Calendar.WEEK_OF_YEAR не работает должным образом. Моя цель - каждый понедельник - новая неделя. Результаты, которые я получаю, находятся в комментариях к коду.Calendar.WEEK_OF_YEAR не работает должным образом

Но я не могу найти решение.


Мой код:

Calendar cal = Calendar.getInstance(); 
//cal.setMinimalDaysInFirstWeek(7); 
//cal.setFirstDayOfWeek(0); 
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); 

Date d = sdf.parse("27/12/2014"); //SAT 
Date d1 = sdf.parse("28/12/2014"); //SUN 

cal.setTime(d); 
Integer weekNumber1 = cal.get(Calendar.WEEK_OF_YEAR); 

cal.setTime(d1); 
Integer weekNumber2 = cal.get(Calendar.WEEK_OF_YEAR); 

System.out.println(weekNumber1);// 52 
System.out.println(weekNumber2);// 1` 

второй:

Calendar cal = Calendar.getInstance(); 
cal.setMinimalDaysInFirstWeek(7); 
//cal.setFirstDayOfWeek(0); 
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); 

Date d = sdf.parse("27/12/2014"); //SAT 
Date d1 = sdf.parse("28/12/2014"); //SUN 

cal.setTime(d); 
Integer weekNumber1 = cal.get(Calendar.WEEK_OF_YEAR); 

cal.setTime(d1); 
Integer weekNumber2 = cal.get(Calendar.WEEK_OF_YEAR); 

System.out.println(weekNumber1);// 51 
System.out.println(weekNumber2);// 52 

И третий один:

Calendar cal = Calendar.getInstance(); 
cal.setMinimalDaysInFirstWeek(7); 
cal.setFirstDayOfWeek(0); 
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); 

Date d = sdf.parse("27/12/2014"); //SAT 
Date d1 = sdf.parse("28/12/2014"); //SUN 
Date d2 = sdf.parse("29/12/2014"); //Mon 

cal.setTime(d); 
Integer weekNumber1 = cal.get(Calendar.WEEK_OF_YEAR); 

cal.setTime(d1); 
Integer weekNumber2 = cal.get(Calendar.WEEK_OF_YEAR); 

cal.setTime(d2); 
Integer weekNumber3 = cal.get(Calendar.WEEK_OF_YEAR); 

System.out.println(weekNumber1);// 52 
System.out.println(weekNumber2);// 52 
System.out.println(weekNumber3);// 52 
+1

Дата d2 = sdf.parse ("28/12/2014"); // Пн ошибается Понедельник 29/12 –

+1

вопрос редактируется, но вывод не обрабатывается 29 возвращает 52 – Tato

ответ

5

Вы должны установить в понедельник, как первый день недели для вашего Календаря.

cal.setFirstDayOfWeek(Calendar.MONDAY); 
+0

o да, я думал, что cal.setFirstDayOfWeek (0); (на мой взгляд mondey) было то же самое. tnk u – Tato

Смежные вопросы