Joda-Time es en modo de mantenimiento
FYI, el proyecto Joda-Time está ahora en maintenance mode, con el equipo asesorando a la migración a las clases java.time. Ver .
Definir ‘semana’
Se puede definir una semana en diferentes maneras.
Supongo que se refiere al estándar ISO 8601 week. La semana número 1 tiene el primer jueves del año, comienza el lunes y el año de una semana tiene 52 o 53 semanas. Unos días al final o al comienzo del año calendario pueden aterrizar en el otro año basado en la semana.
java.time
El enfoque moderno utiliza los java.time clases, y su extensión encuentran en el proyecto ThreeTen-Extra.
De ThreeTen-Extra, utilice la clase YearWeek
.
YearWeek start = YearWeek.of(2017 , 1) ; // First week of the week-based year 2017.
Obtenga la cantidad de semanas en este año basado en la semana, 52 o 53.
int weeks = start.lengthOfYear() ;
... o ...
int weeks = (start.is53WeekYear()) ? 53 : 52 ;
bucle para cada semana del año. Para cada YearWeek
, solicítelo para producir un LocalDate
para el comienzo y el final de esa semana.
List<String> results = new ArrayList<>(weeks) ;
YearWeek yw = start ;
for(int i = 1 , i <] weeks , i ++) {
String message = "Week: " + yw + " | start: " + yw.atDay(DayOfWeek.MONDAY) + " | stop: " + yw.atDay(DayOfWeek.SUNDAY) ;
results.add(message) ;
// Prepare for next loop.
yw = yw.plusWeeks(1) ;
}
Sobre java.time
El marco java.time está incorporado en Java 8 y versiones posteriores. Estas clases suplantan a las viejas y problemáticas clases de fecha y hora legacy, como java.util.Date
, Calendar
, & SimpleDateFormat
.
El proyecto Joda-Time, ahora en maintenance mode, recomienda la migración a las clases java.time.
Para obtener más información, consulte el Oracle Tutorial. Y busque Stack Overflow para obtener muchos ejemplos y explicaciones. La especificación es JSR 310.
¿Dónde obtener las clases java.time?
- Java SE 8, Java SE 9, y más tarde
- incorporado.
- Parte de la API estándar de Java con una implementación integrada.
- Java 9 agrega algunas características menores y correcciones.
- Java SE 6 y Java SE 7
- Gran parte de la funcionalidad de back-java.time está portado a Java 6 & 7 en ThreeTen-Backport.
- Android
El proyecto se extiende ThreeTen-Extra java.time con clases adicionales. Este proyecto es un terreno de prueba para posibles adiciones futuras a java.time. Puede encontrar algunas clases útiles aquí, como Interval
, YearWeek
, YearQuarter
y more.
¡Guau, muchas gracias! – user1412715