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:
- encuentre el día de la semana de la fecha objetivo (21 de enero de 2011 como mencionó)
- determinar cuántos días antes del lunes esto es
- 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