Entrada destacada

Como usar enums en Android, kotlin

Obtener el día de la semana en que será tu cumpleaños en Java

Planteamiento:
Crear un programa en java que devuelva el día de la semana que será tu cumpleaños en el año solicitado.

Especificaciones:
Se debe poder ingresar el año que se desea consultar, así como la fecha de nacimiento, el año actual debe ser obtenido automáticamente. Finalmente se debe imprimir un mensaje el cual indique el día en texto en que será el cumpleaños en el año solicitado.

Código completo.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
package devTepec.Fechas;

import javax.swing.JOptionPane;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.Locale;

public class PrincipalFechas {

    public static void main(String [] args){

        int anioActual = Calendar.getInstance().get(Calendar.YEAR);
        String inputAnio = JOptionPane.showInputDialog(null, "Ingresa el año que quieres consultar: ");
        String fecha = JOptionPane.showInputDialog(null, "Ingresa la fecha de tu cumpleaños en formato dias/mes ( 06/10 )");

        int numeroAnios = Integer.parseInt(inputAnio) - anioActual;
        String datosFecha[] = fecha.split("/");
        int mes = Integer.parseInt(datosFecha[0]);
        int dia = Integer.parseInt(datosFecha[1]);

        GregorianCalendar gregorianCalendar = new GregorianCalendar(anioActual, mes, dia);

        for (int i = 0; i < numeroAnios; i++){
            gregorianCalendar.roll(Calendar.YEAR, 1);
        }
        String dayName = gregorianCalendar.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.LONG, Locale.getDefault());
        JOptionPane.showMessageDialog(null, "Tu proximo cumpleaños será en \"" + dayName+"\"");
    }
}

Ahora veamos como está compuesto.

Dentro del método main, primero obtenemos el año actual utilizando la librería de java.util.Calendar, la cual nos devuelve el año como un dato entero.

12
int anioActual = Calendar.getInstance().get(Calendar.YEAR);

Las siguientes líneas son para pedir datos al usuario, el año que se a desea consultar y la fecha de cumpleaños, en este caso solo pedimos día y mes ya que el año de nacimiento no es requerido.

13
14
String inputAnio = JOptionPane.showInputDialog(null, "Ingresa el año que quieres consultar: ");
String fecha = JOptionPane.showInputDialog(null, "Ingresa la fecha de tu cumpleaños en formato dias/mes ( 06/10 )");


Una vez solicitados los datos hacemos algunos ajustes con los datos de entrada, como obtener el número de años por recorrer a partir del año actual al solicitado. split es utilizado para obtener cada una de las partes de la fecha (el día y el mes) y son transformados a enteros.


16
17
18
19
        int numeroAnios = Integer.parseInt(inputAnio) - anioActual;
        String datosFecha[] = fecha.split("/");
        int mes = Integer.parseInt(datosFecha[0]);
        int dia = Integer.parseInt(datosFecha[1]);

Mediante la clase GregorianCalendar construimos la fecha y mediante un bucle for que recorre los años hasta llegar al solicitado y con roll agregamos un año con cada ciclo.

21
22
23
24
25
        GregorianCalendar gregorianCalendar = new GregorianCalendar(anioActual, mes, dia);

        for (int i = 0; i < numeroAnios; i++){
            gregorianCalendar.roll(Calendar.YEAR, 1);
        }

Después obtenemos el nombre del día e imprimimos el mensaje.

26
27
        String dayName = gregorianCalendar.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.LONG, Locale.getDefault());
        JOptionPane.showMessageDialog(null, "Tu proximo cumpleaños será en \"" + dayName+"\"");


Comenta tus dudas en la sección de comentarios.

Comentarios