Java - Ejercicio de fechas - Mostrar los viernes dia 6

 
Vista:
sin imagen de perfil
Val: 54
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Ejercicio de fechas - Mostrar los viernes dia 6

Publicado por Cristian (8 intervenciones) el 28/10/2020 04:58:11
Hola necesito resolver este ejercicio:
Se desea una aplicación que liste todos los días viernes cuyo número de día en el mes sea 6, es decir, todos los viernes 6 entre el día 6 del mes actual y el 31 de diciembre del próximo año. Para eso, se pide almacenar las fechas que cumplan ese criterio en una lista y luego recorrer dicha lista para mostrar en pantalla las fechas con el siguiente formato: “dd-MMM-yyyy”.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
-1
Responder
Imágen de perfil de Billy Joel
Val: 2.665
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Ejercicio de fechas - Mostrar los viernes dia 6

Publicado por Billy Joel (876 intervenciones) el 29/10/2020 21:32:02
Para resolver esto te voy a utilizar la clase Calendar. Bucle de repetición do-while, la clase SimpleDateFormat y un foreach bien sabrosón
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
 
public class ViernesSextos {
 
    public static void main(String[] args) {
        Calendar c = Calendar.getInstance();
        int yearLimit = c.get(Calendar.YEAR) + 1;
        List<String> sextosViernes = new ArrayList();
        SimpleDateFormat sdf = new SimpleDateFormat("dd-MMM-yyyy");
        do {
            c.set(Calendar.DAY_OF_MONTH, 6);
            if(c.get(Calendar.DAY_OF_WEEK) == Calendar.FRIDAY){
                sextosViernes.add(sdf.format(c.getTime()));
            }
            c.add(Calendar.MONTH, 1);
        } while (c.get(Calendar.YEAR) <= yearLimit && c.get(Calendar.MONTH) <= Calendar.DECEMBER);
        sextosViernes.forEach(System.out::println);
    }
}

Casi se me pasaba, para los patrones de fechas te dejo este tutorial en donde pasan las fechas al formato que tu necesites con el SimpleDateFormat.

Cualquier duda solo escribe.
Saludos,
Billy Joel
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 54
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Ejercicio de fechas - Mostrar los viernes dia 6

Publicado por Andres (8 intervenciones) el 31/10/2020 15:33:11
Muchas gracias por tu respuesta. Me estoy iniciando en la programacion y hay cosas que aun me cuesta entender.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ejercicio de fechas - Mostrar los viernes dia 6

Publicado por Arturo (2 intervenciones) el 01/11/2020 22:23:00
Un poco más simplificado

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package org.sin.date;
 
import java.time.LocalDate;
import static java.time.DayOfWeek.*;
 
/**
 * @author arturo
 *
 */
public class ObtiendoDias {
 
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		System.out.println("Obtiendo todos los días viernes 6 del mes actual y día del 2020 y el 31 de diciembre del 2021: ");
		LocalDate.of(2020, 11, 1).datesUntil(LocalDate.of(2021, 12, 31))
				.filter(ld -> ld.getDayOfMonth() == 6 && ld.getDayOfWeek() == FRIDAY)
				.forEach(System.out::println);
 
	}
 
}
Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Rodrigo
Val: 2.041
Plata
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Ejercicio de fechas - Mostrar los viernes dia 6

Publicado por Rodrigo (623 intervenciones) el 01/11/2020 23:21:36
Lo malo es que ese programa simplificado no va a funcionar cuando sea mas alla del 2020. "Actual" y "Proximo an~o" cambian en el tiempo, por lo que para realmente resolver el problema tienes que cambiar el 2020 y 2021 del programa y calcularlo de algun modo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar