package capitulo07.bloque02;

import javax.swing.*;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.TimeZone;

public class Ejercicio04 {
    public static void main(String[] args) {
        String fecha = JOptionPane.showInputDialog("Mete una fecha con el siguiente formato: dd/MM/yyyy");
        SimpleDateFormat formatoFecha = new SimpleDateFormat("dd/MM/yyyy");
        Date fechaFormateada = null;
        Calendar fechaCalendar = null;
        try {
            fechaFormateada = formatoFecha.parse(fecha);
            fechaCalendar = new GregorianCalendar();
            fechaCalendar.setTimeInMillis(fechaFormateada.getTime());
        } catch (ParseException e) {
            System.err.println("No se ha introducido la fecha en un formato válido");
        }


        System.out.println("Date:");
        System.out.println("\tAño: " + new SimpleDateFormat("yyyy").format(fechaFormateada));
        System.out.println("\tMes: " + new SimpleDateFormat("MM").format(fechaFormateada));
        System.out.println("\tDía: " + new SimpleDateFormat("dd").format(fechaFormateada));
        System.out.println("\tHora: " + new SimpleDateFormat("HH").format(fechaFormateada));
        System.out.println("\tMinutos: " + new SimpleDateFormat("mm").format(fechaFormateada));
        System.out.println("\tSegundos: " + new SimpleDateFormat("ss").format(fechaFormateada));

        System.out.println("Calendar:");
        System.out.println("\tAño: " + fechaCalendar.get(Calendar.YEAR));
        System.out.println("\tMes: " + (1 +fechaCalendar.get(Calendar.MONTH)));
        System.out.println("\tDía: " + fechaCalendar.get(Calendar.DAY_OF_MONTH));
        System.out.println("\tHora: " + fechaCalendar.get(Calendar.HOUR));
        System.out.println("\tMinutos: " + fechaCalendar.get(Calendar.MINUTE));
        System.out.println("\tSegundos: " + fechaCalendar.get(Calendar.SECOND));


        System.out.println("Operaciones Fechas:");
        Calendar fechaActual = Calendar.getInstance();
        fechaActual.add(Calendar.DAY_OF_MONTH, 3);
        System.out.println("\tSuma 3 días: " + fechaActual.getTime());
        fechaActual.add(Calendar.WEEK_OF_MONTH, -2);
        System.out.println("\tResta 2 semanas: " + fechaActual.getTime());
        fechaActual.add(Calendar.DAY_OF_MONTH, 300);
        System.out.println("\tSuma 300 días: " + fechaActual.getTime());
        fechaActual.add(Calendar.YEAR, 4);
        System.out.println("\tSuma 4 años: " + fechaActual.getTime());




        Calendar horaItalia = Calendar.getInstance(TimeZone.getTimeZone("Europe/Rome"));
        Calendar horaWashington = Calendar.getInstance(TimeZone.getTimeZone("America/New_York"));

        System.out.println("Hora en Italia: " + horaItalia.get(Calendar.HOUR_OF_DAY));
        System.out.println("Hora en Washington: " + horaWashington.get(Calendar.HOUR_OF_DAY));

        System.out.println("Diferencia horaria: " + (horaItalia.get(Calendar.HOUR_OF_DAY)-horaWashington.get(Calendar.HOUR_OF_DAY)) + " horas");
    }
}
