Mahendra:
LocalDate initial = LocalDate.now();
DayOfWeek dayOfWeek = DayOfWeek.WEDNESDAY;
WeekFields weekFields = WeekFields.of(dayOfWeek, 1);
int weekNo = date.get(weekFields.weekOfWeekBasedYear());
System.out.println("Week No"+weekNo);
Estoy utilizando el código de fecha 07/29/2018. Espero que la semana hay 30, pero me da 31.
Lo que me estoy perdiendo aquí para obtener el resultado de 30?
Tomasz Linkowski:
Si se espera que la producción ya que, según la norma ISO-8601 , donde la semana actual es la semana 30 , que había necesidad de seguir esta:
Número de la semana de acuerdo a la norma ISO-8601, semana a partir del lunes. La primera semana del año es la semana en que haya primer jueves de ese año (= 'Primera 4 días de la semana').
Esto se implementa WeekFields.ISO
.
Si por el contrario, desea que la semana para empezar en WEDNESDAY
, sólo se necesita cambiar el minimalDaysInFirstWeek
de 1
a 4
(= 'Primera 4 días de la semana'):
LocalDate date = LocalDate.now();
WeekFields weekFields = WeekFields.of(DayOfWeek.WEDNESDAY, 4);
int weekNo = date.get(weekFields.weekOfWeekBasedYear());
System.out.println("Week No " + weekNo);