miércoles, 23 de octubre de 2019

Trabajando con JavaTime - LocalDateTime

La clase "LocalDate" que fue añadida en la versión 1.7 del JDK es de alguna manera la nueva forma como podemos manipular fechas en JAVA en lugar de emplear la clase "Date" de "java.util"

Veamos los siguientes ejemplos:

package test;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class Fechas {

    public static void main(String[] args) {
        //Capturando la hora actual
        LocalDateTime hoy = LocalDateTime.now();
        System.out.println("Fecha y hora actual: " + hoy.toString());

        //Ingresando el año, mes, día, hora y minuto (segundo es opcional)
        LocalDateTime desdeInt = LocalDateTime.of(2019, 10, 23, 12, 31);
        System.out.println("Fecha y hora actual desde ints: " + desdeInt.toString());

        //Ingresando hora desde un String, usando formato año, mes, día, hora, minuto y segundo
        LocalDateTime desdeString = LocalDateTime.parse("1992-06-30T21:11:30");
        System.out.println("Fecha y hora con formato por defecto: " + desdeString.toString());

        //Ingresando hora desde un String que tiene formato: Horas y minutos
        DateTimeFormatter formato = DateTimeFormatter.ofPattern("dd-MM-yyyy HH:mm:ss");
        LocalDateTime conFormato = LocalDateTime.parse("30-06-1992 21:52:00", formato);
        System.out.println("Fecha y hora ingresados con formato: " + conFormato.toString());
        //Si queremos retornar en un String con formato personalizado
        DateTimeFormatter formatoFechaHora = DateTimeFormatter.ofPattern("dd-MMM-yyyy hh:mm:ss a");
        String horaCorta = conFormato.format(formatoFechaHora);
        System.out.println("Fecha y hora mostrados con formato: " + horaCorta);

        //Extrayendo los datos individualmente
        System.out.println("Fecha y hora: "
                + traductor(conFormato.getDayOfWeek().toString()) + ", "
                + conFormato.getDayOfMonth() + " de "
                + traductor(conFormato.getMonth().toString()) + " de "
                + conFormato.getYear() + ". A las "
                + conFormato.getHour() + " horas con "
                + conFormato.getMinute() + " minutos y "
                + conFormato.getSecond() + " segundos");
    }

     private static String traductor(String eng) {
        String esp;
        switch (eng) {
            case "TUESDAY":
                esp = "MARTES";
                break;
            case "JUNE":
                esp = "JUNIO";
                break;
            default:
                esp = eng;
        }
        return esp;
    }
}

Nos producirá una salida similar a esta:
Fecha y hora actual: 2019-10-23T12:44:55.758
Fecha y hora actual desde ints: 2019-10-23T12:31
Fecha y hora con formato por defecto: 1992-06-30T21:11:30
Fecha y hora ingresados con formato: 1992-06-30T21:52
Fecha y hora mostrados con formato: 30-jun-1992 09:52:00 PM
Fecha y hora: MARTES, 30 de JUNIO de 1992. A las 21 horas con 52 minutos y 0 segundos

Se creó, además, una función extremadamente simple llamada traductor que convierte los meses y nombres de días de ingles a español.

No hay comentarios:

Publicar un comentario