joda examples example dates java jodatime

examples - ¿El primer día de una semana en particular en Joda-Time? Java



jodatime difference between dates (5)

Consulte la sección "Consultar fechas y horas" de la guía de usuario de Joda-Time .

Aquí está el algoritmo general que seguiría:

  1. encuentre el día de la semana de la fecha objetivo (21 de enero de 2011 como mencionó)
  2. determinar cuántos días antes del lunes esto es
  3. Reste el valor de # 2 de la fecha objetivo usando dateTime.minusDays(n)

En Joda-Time , ¿hay alguna forma de obtener la fecha del primer día de la semana (lunes)?

por ejemplo, quiero saber qué fecha fue esta semana el lunes a partir de la fecha actual de hoy 21/01/11

Saludos de antemano.

editar: también deseo encontrar la fecha para el final de la semana, es decir, la fecha del domingo. aclamaciones


Otra opción es usar roundFloorCopy . Esto se ve así:

LocalDate startOfWeek = new LocalDate().weekOfWeekyear().roundFloorCopy();

Para el último día de la semana estándar (domingo) use roundCeilingCopy y minusDays ...

LocalDate lastDateOfWeek = new LocalDate().weekOfWeekyear().roundCeilingCopy().minusDays( 1 );

También funciona para DateTime. Y funciona para fin de semana (exclusivo).

DateTime dateTime = new DateTime(); DateTime startOfWeek = dateTime.weekOfWeekyear().roundFloorCopy(); DateTime endOfWeek = dateTime.weekOfWeekyear().roundCeilingCopy();

Volcado a la consola ...

System.out.println( "dateTime " + dateTime ); System.out.println( "startOfWeek " + startOfWeek ); System.out.println( "endOfWeek " + endOfWeek );

Cuando se ejecuta ...

dateTime 2014-01-24T00:00:34.955-08:00 startOfWeek 2014-01-20T00:00:00.000-08:00 endOfWeek 2014-01-27T00:00:00.000-08:00


Pruebe LocalDate.withDayOfWeek :

LocalDate now = new LocalDate(); System.out.println(now.withDayOfWeek(DateTimeConstants.MONDAY)); //prints 2011-01-17 System.out.println(now.withDayOfWeek(DateTimeConstants.SUNDAY)); //prints 2011-01-23


Puede usar el método getDayOfWeek() que le devuelve 1 para el lunes, 2 para el martes, ..., 7 para el domingo para volver tantos días y llegar al lunes:

import org.joda.time.DateTime; public class JodaTest { public static void main(String[] args) { DateTime date = new DateTime(); System.out.println(date); //2011-01-21T15:06:18.713Z System.out.println(date.minusDays(date.getDayOfWeek()-1)); //2011-01-17T15:06:18.713Z } }


LocalDate today = new LocalDate(); LocalDate weekStart = today.dayOfWeek().withMinimumValue(); LocalDate weekEnd = today.dayOfWeek().withMaximumValue();

Le dará el primer y último día, es decir, lunes y domingo