Saltar al contenido

¿Cómo obtener la fecha del número de semana, año y día de la semana en Java?

Solución:

En lugar de agregando un número de días para wkstart, usar with nuevamente para configurar el día de la semana. Por ejemplo:

LocalDate date = LocalDate.now()
    .with(WeekFields.ISO.weekBasedYear(), 2018) // year
    .with(WeekFields.ISO.weekOfWeekBasedYear(), 51) // week of year
    .with(WeekFields.ISO.dayOfWeek(), DayOfWeek.MONDAY.getValue()); // day of week

org.threeten.extra.YearWeek

La respuesta de Sweeper parece correcta. Pero hay una clase más especializada para esto.

Si realiza mucho trabajo con semanas de años basados ​​en semanas según la definición de semana de ISO 8601, utilice la YearWeek clase encontrada en el ThreeTen-Extra Biblioteca.

Determina la semana.

YearWeek yearWeek = YearWeek.of( 2019 , 51 ) ;

Obtener una LocalDate para el día de la semana dentro de esa semana.

LocalDate localDate = yearWeek.atDay( DayOfWeek.MONDAY ) ;

Para el día de la semana, debe usar DayOfWeek enum objetos en su código en lugar de meros números enteros. Conseguir un DayOfWeek desde un número original del 1 al 7 de lunes a domingo, llame DayOfWeek.of( x ).

DayOfWeek dow = DayOfWeek.of( 1 ) ;  // 1 = Monday, 7 = Sunday.

Poniendo todo eso junto, obtenemos este resumen.

LocalDate localDate = 
        YearWeek               // Represent an entire week of a week-based year per the ISO 8601 standard definition of a week.
        .of(                   // Instantiate a `YearWeek` object.
            2019 ,             // Specify the week-based year number, NOT the calendar year.
            51                 // Specify the week number, 1-52 or 1-53. 
        )
        .atDay(
            DayOfWeek.of( 1 )  // The value 1 yields a `DayOfWeek.MONDAY` object.
        )
;

Para ser claros… La definición de ISO 8601 de una semana es:

  • La semana # 1 contiene el primer jueves del año.
  • Las semanas comienzan en lunes y terminan en domingo.
  • Un año tiene 52 o 53 semanas completas de 7 días.
  • Las primeras / últimas semanas del año basado en semanas pueden contener los días anteriores / anteriores del año calendario anterior / siguiente. Por lo tanto, el año calendario de esos días difiere del año basado en semanas.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : / /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *